我正在开发一个像 eBay 这样的 iOS 应用程序。对于此 Web 服务,开发人员正在使用 Magento。他开发了 Login 的 Web 服务。以下是几种情况:
1)如果我发送有效的登录凭据,他会返回我登录的响应中使用的信息+一个标志作为结果= true&在这种情况下http状态代码是200。
2)如果我发送错误的密码,他会返回一个标志,结果= false并且http状态代码为200。
基本上我不想依赖结果标志,因为如果开发人员更改了结果标志名称,那么 iOS 应用程序将无法识别它。所以我想遵循 http 状态代码的标准。
我的问题是,在第二种情况下发送 200 作为 http 状态码是否正确?我认为他应该给我发401?如果我错了请纠正我。 如果我是对的,有什么方法可以从 php 代码发送 http 状态代码,以便我可以在 iOS 端检查 http 状态代码?
您可以通过以下方式在 Magento 中添加自定义响应状态代码,
$this->getResponse()->setHeader('HTTP/1.0','404',true);
$this->getResponse()->setHeader('HTTP/1.0','200',true);
其中 $this 是控制器操作对象,代码在您的 magento 控制器中运行
我的问题是,在第二种情况下发送 200 作为 http 状态码是否正确?我认为他应该给我发401?如果我错了请纠正我。
这取决于您的需求。编写规范,然后相应地实施。如果你说401,就选401。
如果我是对的,有没有办法从php代码发送http状态代码,以便我可以在iOS端检查http状态代码?
当然有。幸运的是,这个问题之前已经被问过,所以信息已经在这个网站上,我们不需要再次回答。
你可以使用这个,效果就像一个魅力。
$resultPage = $this->resultFactory
->create($this->resultFactory::TYPE_RAW)
->setHttpResponseCode(\Magento\Framework\Webapi\Exception::HTTP_FORBIDDEN)
->setContents('Forbidden: Access is denied');
return $resultPage;