天天看点

良好的URI设计的一些基本原则

作者:漫行者曰
良好的URI设计的一些基本原则

良好的URI设计的一些基本原则

  1. 不要使用查询参数来更改状态。
  2. 不要使用大小写混用的路劲除非有必要,最好的都是小写字母。
  3. 不要使用实现特定的扩展你的URI(php,py,PL,等。)
  4. 不要让你的URI有远程过程调用(RPC)的缺陷
  5. 尽可能多地限制URI空间。
  6. 保持路径段短
  7. 最好用/resource或者/resource/;同时为你没有用到的路径创建301重定向
  8. 使用查询参数对于一个子资源的选择;如分页、搜索查询
  9. 不要在URL中填写任何东西,应该放在HTTP头或正文中去。

(注意:我没有说“RESTful URI设计”;URI本质上是不透明的REST。)

良好的URI设计的一些基本原则

HTTP方法选择的11个基本原则:

  1. 永远不要GET去改变状态;这会让Googlebot毁掉你的一天
  2. 不要用PUT,除非你要更新整个resource
  3. 不要用PUT,除非你可以一直合法的用GET在同一个URI上
  4. 不要用POST来检索信息,那是长效的并且可能被缓冲
  5. 不要执行一个操作是非幂等的PUT
  6. 尽可能使用get
  7. 当不确定使用PUT还是POST时,优先使用POST
  8. 要使用POST当你需要做一些类似RPC时
  9. 对类较大或层次的资源使用PUT
  10. 删除资源时,优先选择DELETE而不是POST
  11. 在做计算之类的请求时,优先使用GET;除非你的INPUT很大,这是你可以考虑使用POST
良好的URI设计的一些基本原则

Web服务中HTTP设计的一般原则:

  1. 不要将元数据放在body中,应该放在header中。
  2. 不要将元数据放在单独的资源中,除非当包含元数据时会造成很大的开销。
  3. 使用适当的状态码
  • 201 Created指创建资源时;在发送响应时资源必须存在
  • 202 Accepted指成功执行一个操作或异步创建资源
  • 400 Bad Request指当有人用伪造的数据进行操作;应用程序可能是一个验证错误;一般保存为500的未捕获的异常
  • 401 Unauthorized指当某人访问您的API时,未提供必要的授权header或授权中的凭据无效时;如果您不希望通过授权header来进行凭证,则不要使用此响应代码。
  • 403 Forbidden指当某人恶意或未经授权的方式访问你的API时
  • 405 Method Not Allowed指当本来必须用PUT,而有人却POST时,等等
  • 413 Request Entity Too Large指当某人试图发送一个无法接收的大文件时
  • 418 I’m teapot 指当我试图用茶壶冲泡咖啡时
  1. 尽可能使用缓存Headers
  • ETag headers让你很容易的将资源设置为哈希值
  • Last-Modified向你表明,保留资源更新时的时间戳是一个好主意。
  • Cathe-Control和Expires应该有一个合理的值。
  1. 尽一切可能执行请求中的缓存headers(If-None-Modified, If-Modified-Since)
  2. 使用重定向的时一定要有意义,但这应该是罕见的Web服务

继续阅读