我在Swagger中创建了一个相当简单的API描述,并定义了一些对象。尽管我现在认为我应该定义一种结构,以便为400多个状态代码提供有意义的错误描述,并且我还需要返回创建的资源的ID。
我的API将用于高容量和低延迟的通信(在某些时候,我还必须在以后的版本中使用protobuf来进一步提高性能)。因此,我想使响应不那么冗长。
也就是说,我倾向于API的以下行为:
普通对象:
{
"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的正确方法,而不是用于常规数据的正确方法?