响应为 iOS 应用程序开发的 php(Magento) Web 服务的 HTTP 状态代码

问题描述 投票:0回答:3

我正在开发一个像 eBay 这样的 iOS 应用程序。对于此 Web 服务,开发人员正在使用 Magento。他开发了 Login 的 Web 服务。以下是几种情况:

1)如果我发送有效的登录凭据,他会返回我登录的响应中使用的信息+一个标志作为结果= true&在这种情况下http状态代码是200。

2)如果我发送错误的密码,他会返回一个标志,结果= false并且http状态代码为200。

基本上我不想依赖结果标志,因为如果开发人员更改了结果标志名称,那么 iOS 应用程序将无法识别它。所以我想遵循 http 状态代码的标准。

我的问题是,在第二种情况下发送 200 作为 http 状态码是否正确?我认为他应该给我发401?如果我错了请纠正我。 如果我是对的,有什么方法可以从 php 代码发送 http 状态代码,以便我可以在 iOS 端检查 http 状态代码?

php web-services magento ios6 http-status-codes
3个回答
5
投票

您可以通过以下方式在 Magento 中添加自定义响应状态代码,

$this->getResponse()->setHeader('HTTP/1.0','404',true);
$this->getResponse()->setHeader('HTTP/1.0','200',true);

其中 $this 是控制器操作对象,代码在您的 magento 控制器中运行


1
投票

我的问题是,在第二种情况下发送 200 作为 http 状态码是否正确?我认为他应该给我发401?如果我错了请纠正我。

这取决于您的需求。编写规范,然后相应地实施。如果你说401,就选401。

如果我是对的,有没有办法从php代码发送http状态代码,以便我可以在iOS端检查http状态代码?

当然有。幸运的是,这个问题之前已经被问过,所以信息已经在这个网站上,我们不需要再次回答。


0
投票

你可以使用这个,效果就像一个魅力。

$resultPage = $this->resultFactory
    ->create($this->resultFactory::TYPE_RAW)
    ->setHttpResponseCode(\Magento\Framework\Webapi\Exception::HTTP_FORBIDDEN)
    ->setContents('Forbidden: Access is denied');

return $resultPage;
© www.soinside.com 2019 - 2024. All rights reserved.