HTTP响应Mojolicious的REST调用中的错误

Ha *_* Sh 3 rest perl httpresponse mojolicious

我使用的mojolicious应用程序是基于JSON的,即客户端和服务器之间的交互更多是JSON结构化数据的交换.

我试图在其中一个REST调用期间发生错误时,使用正确的HTTP响应代码实现处理错误的标准方法.实施这样一个标准的最佳方法是什么?我在哪里做?

我看到了几种方法

  1. 创建一个类并列出所有错误响应及其相关内容,可以使用响应代码调用此类,该响应代码将返回包含所有相关条目的JSON结构(散列和数组的组合),然后使用render_json控制器中的()方法并将其作为对客户端的响应返回

  2. 我可以在数据库中创建一个表,其中包含响应所需的所有字段的条目,使用该字段来访问JSON结构,创建适当的响应并在控制器中使用render_json()并将其作为对客户端的响应返回.

错误响应的示例可能是

{
    "Message": "The requested resource is not found"
    "Type" : "http://this.is.an.error.com/error/resource_not_found",
    "ErrorCode" : 404,
    "Created" : "2012-11-05T11:59:29-05:00",
    "Request" : "GET /types/Foo/instances" 
}
Run Code Online (Sandbox Code Playgroud)

标准化此类响应的正确方法是什么?

Tud*_*tin 5

正如titanofold所说,我会选择2.

关于错误代码,请尝试坚持使用标准HTTP响应状态代码.除了ErrorCode在JSON中设置属性外,您还应该在响应头中发送状态代码,因为:

  • 你可以在一个地方处理错误 - error你的javascript函数的回调
  • 将来你可能有你的后端的其他消费者(例如移动应用程序)
  • 这就是他们被发明的原因

使用Mojolicious可以实现极其简单:

$self->render_json( { 
    Message   => "The requested resource is not found", 
    Type      => "http://this.is.an.error.com/error/resource_not_found", 
    ErrorCode => 404, 
    Created   => "2012-11-05T11:59:29-05:00", 
    Request   => "GET /types/Foo/instances",
   }, 
  status => 404);
Run Code Online (Sandbox Code Playgroud)