返回错误和资源创建消息的正确方法

时间:2019-06-06 16:00:14

标签: json swagger

我在Swagger中创建了一个相当简单的API描述,并定义了一些对象。尽管我现在认为我应该定义一种结构,以便为400多个状态代码提供有意义的错误描述,并且我还需要返回创建的资源的ID。

我的API将用于高容量和低延迟的通信(在某些时候,我还必须在以后的版本中使用protobuf来进一步提高性能)。因此,我想使响应不那么冗长。

也就是说,我倾向于API的以下行为:

  • 返回没有任何信封的纯JSON结构,以成功获取请求
  • 返回包含错误消息的信封,如以下答案所示,其中包含400多个错误和内部错误状态代码:https://stackoverflow.com/a/12979961/1708349
  • 为成功创建的资源返回ID的信封(ID在服务器上生成),因此状态为201

示例

普通对象:

{
   "smartphone_id" : "493F4756-574B-4EE2-A14C-F716B04C83AF",
   "x": 10,
   "y": 5
}

错误消息:

{
  "status": "error",
  "message": "Bad request: Coordinates out of bounds" /* optional */
}

已创建资源的信封(返回ID)

{
  "status": "success",
  "message": "Smartphone object created successfully", /* optional */
  "ids": ["493F4756-574B-4EE2-A14C-F716B04C83AF", 
           623FD344-7304-4096-9FA1-1865E96A52D9]
}

我尤其不确定最后一个示例返回已创建资源的ID的情况。这是处理已创建资源并在存在用于创建资源和错误的信封的情况下混合API的正确方法,而不是用于常规数据的正确方法?

0 个答案:

没有答案