标准的JSON API响应格式?

从API中构建JSON响应是否存在标准或最佳实践? 显然,每个应用程序的数据都是不同的,所以我不关心,但如果你愿意的话,而是“回应样板”。 我的意思是一个例子:

成功的要求:

{
  "success": true,
  "payload": {
    /* Application-specific data would go here. */
  }
}

请求失败:

{
  "success": false,
  "payload": {
    /* Application-specific data would go here. */
  },
  "error": {
    "code": 123,
    "message": "An error occurred!"
  }
}

是的,已经出现了一些标准(虽然标准的定义有些自由):

  • JSON API - JSON API涵盖了创建和更新资源,而不仅仅是响应。
  • JSend - 简单,可能你已经在做什么。
  • OData JSON协议 - 非常复杂。
  • 哈尔 - 像OData,但旨在成为HATEOAS。
  • 还有JSON API描述格式:

  • 昂首阔步
  • JSON Schema(由Swagger使用,但可以单独使用)
  • WADL在JSON中
  • 肾错构瘤
  • HAL因为HATEOAS在理论上是自我描述的。

  • Google JSON指南

    成功响应返回data

    {
      "data": {
        "id": 1001,
        "name": "Wing"
      }
    }
    

    错误响应返回error

    {
      "error": {
        "code": 404,
        "message": "ID not found"
      }
    }
    

    如果你的客户端是JS,你可以使用if ("error" in response) {}来检查是否有错误。


    我想事实上的标准并没有真正出现(可能永远不会)。 但不管,这里是我的看法:

    成功的要求:

    {
      "status": "success",
      "data": {
        /* Application-specific data would go here. */
      },
      "message": null /* Or optional success message */
    }
    

    请求失败:

    {
      "status": "error",
      "data": null, /* or optional error payload */
      "message": "Error xyz has occurred"
    }
    

    优点:成功和错误情况下的顶级要素相同

    缺点:没有错误代码,但是如果你愿意,你可以将状态更改为(成功或失败)代码,或者你可以添加另一个名为“代码”的顶级项目。

    链接地址: http://www.djcxy.com/p/1311.html

    上一篇: Standard JSON API response format?

    下一篇: Why does parseInt(1/0, 19) return 18?