我正在为symfony2中所有fosrestbundle个http错误消息的强制 content-type
到application/json
寻找一个简单,愚蠢的解决方案(如MethodNotAllowedHttpException
等)。
示例请求标头:
Content-Type: application/x-www-form-urlencoded
Accept: */*
当前响应标题(MethodNotAllowedHttpException
):
Content-Type: text/html; charset=UTF-8
答案 0 :(得分:1)
如果标头中的值未通过逻辑测试,则可以抛出错误。然后在你的catch语句中,返回一个json响应。像这样(未经测试的代码)
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
// .....
public function myAction(Request $request){
try{
// ...
$cType = $request->headers->get('Content-Type');
// logic for testing if the content type is allowed
if(!in_array($cType,$allowedArray)){
throw new MethodNotAllowedHttpException();
}
// .....
}catch(\Exception $e){
if(get_class($e) == "MethodNotAllowedHttpException"){
$data = array("success"=>false,"message"=>"Method not allowed")
return new JsonResponse($data);
}
}
}
这样您就可以通过不同的方式处理不同的异常。我不确定您是否要使用内容类型来确定是否抛出异常,但是您可以使用$request->headers->get()