doukai2839 2016-09-30 18:33
浏览 55

Silex JSON样式响应

I'm in the process of switching from the RESTler API framework to Silex. Part of the challenge is making sure the responses from our API does not change since we have apps in production that depend on it. Currently the out-of-the-box Silex 2.0 is intercepting our JSON error handler and replacing it with this:

Whoops Message

What I need as a response is:

{
  "error": {
    "code": 400,
    "message": "This API key is not authorized to complete the operation"
  }
}

I've found snippets of solutions but they are mostly out of date or I could not get them to work with Silex 2.0.

I could easily do

if (!$controllerResponseData) {
    $error = array('message' => 'This API key is not authorized to complete the operation');
    return $app->json($error, 400);
}

However this would have to be done at the routes level, forcing me to rewrite all of my controllers. They don't manage errors, those are handled much deeper at the business logic and model layers.

Is their anyway to override the default error handling in Silex? Also, what would be most ideal is having the error handling as it is for debugging but easily switch to JSON error responses in production or for local testing.

  • 写回答

1条回答 默认 最新

  • duanbanfei2875 2016-09-30 18:46
    关注

    Use construction try catch. For example:

    try{
       // your code 
    } catch(\Namespace\RestException $e) {
      $error = array('message' => 'This API key is not authorized to complete the operation');
      return $app->json($error, 400);
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。
  • ¥15 livecharts wpf piechart 属性
  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了