如何设计简单的CRUD REST API

bir*_*rdy 7 java api rest grails

我正在设计一个简单的CRUD REST API.这是我的第一次,所以我想得到一些关于我的设计是否有意义的反馈.

我正在使用HTTP方法:GET,POST,DELETE和UPDATE.API将以JSON格式使用和获取数据.示例网址将如下所示:

GET (list): curl http://<domain>/myapp/rest/v1/colors
POST: curl -XPOST http://<domain>/myapp/rest/v1/colors -d '{
       "name": "red",
       "shade": "light"
      }'
GET (single item): curl http://<domain>/myapp/rest/v1/colors/2
DELETE: curl -XDELETE http://<domain>/myapp/rest/v1/colors/2
etc...
Run Code Online (Sandbox Code Playgroud)

在POST请求之后,将在数据库中创建记录.那么,POST请求是否应该返回新创建的记录的ID?那ID可以用UPDATE, DELETE and GET (single item)吗?

Oli*_*ohm 5

HTTP规范定义了POST的情况如下:

如果在源服务器上创建了资源,则响应应该是201(已创建)并包含描述请求状态的实体,并引用新资源和Location头(请参阅第14.30节).

所以这基本上意味着:

  • 您应该返回201 Created状态代码
  • 您应该返回一个Location标题,指向新创建的资源的URI
  • 您可以选择在POST响应正文中包含资源的表示,以使客户端不必GET针对从Location标头获取的值发出另一个请求.

  • 不.首先,URI*是ID(因此名称).其次,我写了"资源的表示",这意味着如果你按照"位置"标题中的链接,它与你得到的基本相同,读取:你最初在你的情况下发送的JSON. (4认同)