Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php YII 2.0 REST API错误处理程序_Php_Yii_Yii2 - Fatal编程技术网

Php YII 2.0 REST API错误处理程序

Php YII 2.0 REST API错误处理程序,php,yii,yii2,Php,Yii,Yii2,当API用作模块时,如何设置REST API错误处理程序。 我在HTML响应中得到一个无效的404发现异常,而不是json/xml响应 这是具有无效入口点的示例api URL 这里,api位于模块中,v1与api模块嵌套 答案是 未找到(#404) 无法解析请求“api/v1/invalidentrypoint”。 Web服务器处理您的请求时发生上述错误。 如果您认为这是服务器错误,请与我们联系。谢谢。 我期待着像这样的回应 **未找到HTTP/1.1 404 日期:2014年3月2日星期日0

当API用作模块时,如何设置REST API错误处理程序。 我在HTML响应中得到一个无效的404发现异常,而不是json/xml响应

这是具有无效入口点的示例api URL

这里,api位于模块中,v1与api模块嵌套

答案是

未找到(#404) 无法解析请求“api/v1/invalidentrypoint”。 Web服务器处理您的请求时发生上述错误。 如果您认为这是服务器错误,请与我们联系。谢谢。

我期待着像这样的回应

**未找到HTTP/1.1 404 日期:2014年3月2日星期日05:31:43 GMT 服务器:Apache/2.2.26(Unix)DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y 传输编码:分块

内容类型:application/json;字符集=UTF-8 { “类型”:“yii\web\NotFoundHttpException”, “名称”:“未发现异常”, “消息”:“未找到请求的资源。”, “代码”:0, “状态”:404 }**


请提供帮助。

您是否尝试将响应格式设置为json

只需添加到配置中:

'response' => [
    'format' =>  \yii\web\Response::FORMAT_JSON
]
以下是yii文档中的一些信息:

编辑:使用ethan评论中的yii定义
define是“json”,但使用Yii中定义的const是一个很好的实践。我将以下内容添加到API控制器的构造函数中:


公共函数_构造(字符串$id,模块$Module,数组$config=[]))
{
父项::_构造($id,$module,$config);
\Yii::$app->response->format=response::format\u JSON;
}


这允许我为各个控制器指定JSON错误响应。

我不知道如何指定,但如果您从rest客户端而不是浏览器发出请求,它会以JSON格式提供给您,我已经尝试过了。可能是与我配置的模块相关的问题。我得到了完整的HTML作为回应!您是否使用自定义errorHandler?在模块中注册处理程序时,我遇到了类似的问题。但是在将其移动到config->components之后,它的工作方式与预期的一样。我们也有同样的问题。这是正确的答案,应该这样标记。不过,可能最好将格式设置为\yii\web\Response::format\u JSON,而不是原始字符串“JSON”。这不是为所有响应设置格式吗?如果Yii只提供JSON,那就好了。如果你有HTML页面和API呢?