读[Richardson Maturity Model]

原文地址: https://martinfowler.com/articles/richardsonMaturityModel.html#level0

这篇文章讲述了RESTful的定义和设计模型, 对于每个方法分开讲解了其特点和使用时的注意事项:

GET vs POST:

  • GET 返回的是HTTP 200 OK. POST返回的是HTTP 201 Created.
  • 当GET不到东西时, 应该返回HTTP 200和空的数据结构, POST的东西已经存在时, 应该返回HTTP 409 Conflict。
  • 在只获取数据而不改变数据时, 应该使用GET, GET应该伴随着caching的优化.
  • GET应该是一个safe operation,对应着POST是一个non-safe operation. GET对应的是read, POST对应的是write在consistency model中.

PUT vs POST:

  • 这两个都是更新数据库的方法, 通常下认为PUT是update, POST是create.
  • 但是和一般数据库定义的CRUD有区别, PUT更倾向于更新一个给定地址上的数据, 而POST仅仅是发布一个数据到一个link.比如:
    • 当PUT /www.chenguanghe.com/article/123 时,后台应该:
      • 找到文章id为123的文章
      • 更新文章id为123的文章
      • 返回HTTP 200 OK
    • 当POST /www.chenguanghe.com/article 时, 后台应该:
      • 创建一个文章, 比如其id为333
      • 在333下创建POST的内容.
      • 返回HTTP 201 Created