【问题标题】:Which naming pattern should i use for basic CRUD?我应该为基本 CRUD 使用哪种命名模式?
【发布时间】:2016-05-22 04:50:35
【问题描述】:

我是第一次使用 spring 框架创建一个 RestFul API,现在我对用于创建、读取、更新和删除的常用标签有点困惑。我想遵循一种模式,以便在代码中轻松维护。我应该遵循的标签有什么规则或命名模式吗?

我在想:

/service        -> return every services
/service/new    -> create new service
/service/update -> update service
/service/delete -> delete service

【问题讨论】:

  • 使用带有基本核心弹簧的DAO实现
  • 在开始创建一些 RestFull 服务时请遵循 REST 最佳实践
  • 我建议阅读 Roy Fielding 的论文。

标签: java spring


【解决方案1】:

使用 HTTP 动词来控制你想对资源做什么:

GET:    /services        -> returns all elements
GET:    /services/{id}   -> returns element with id
POST:   /services        -> creates a new object, pass the object in the body
PUT:    /services/{id}   -> updates element with id, pass updated values in body
DELETE: /services/{id} -> delete element with id

我强烈建议您在 GET: /services 中使用查询参数进行分页,如果未列出,则在第 1 页返回默认编号。

完整的请求可能如下所示:http://www.example.com/services?page=5&count=10

【讨论】:

  • 我没有因为你的回答而被定罪。如果我想用超过 1 个参数过滤我的结果,我应该创建类似:GET: /services/{id}/{codeName}/{etc} 吗?
  • 如果我理解正确,是的。 GET:/users/102/profile 可以返回有关用户的完整信息,或者您无法从 GET /users/102 获得的信息。但我会建议您遵循最佳做法,不要超过您的需要
  • 如果您需要使用更多参数进行过滤,则使用 url 参数,因此 url 路径将保持不变。例如GET: /services?codename=abc&page=1&order=asc.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
相关资源
最近更新 更多