原文:https://stackoverflow.com/a/1619677
作者:Bob Aman
翻译:DarcJC
原文并未遵循任何协议,因此本文作者拥有一切解释权。在原作者授权后,本文可以基于知识共享署名-相同方式共享 4.0 国际许可协议转载。
良好的URI一般设计原则:
- 不要利用查询参数来改变状态
- 如果能控制的话,不要使用混合大小写的路径;小写是最好的
- 不要在URI中使用特定实现的拓展名(.php, .py, .pl, etc.)
- 不要为RPC而设计URI
- 请尽可能地限制URI中的空格
- 请保持路径简短
- 请在
/resource
和/resource/
间做出选择;将不使用的那个使用301重定向到另一个 - 在对一个资源的子项进行查询时,请使用查询参数;比如分页、搜索查询
- 当内容可以存在于请求头(主体)时,请不要将其放在URI中
(注意:我没有说这是“RESTFul URI设计”;URI在REST中基本是不透明的)
良好的HTTP方法选择原则:
- 不要用GET来改变状态;这倒是一个让搜索引擎爬虫毁掉你一天的好方法
- 不要使用PUT,除非你要更新整个资源
- 不要使用PUT,除非你也可以合法地在同一个URI使用GET请求
- 不要使用POST来拉取长时间存在或可以被合理地缓存的信息
- 不要用PUT执行一个不等幂的操作;(译注:可以将PUT看做一个一元运算,用其返回结果再进行运算一次后,得到的结果相同)
- 尽可能多地使用GET
- 请在难以抉择时优先使用POST而不是PUT
- 请对更大或者层次化的资源类使用PUT
- 请尽可能在删除资源时使用DELETE而不是POST
- 请在需要计算的环境下使用GET,要是你的输入实在很大,那就使用POST
基于http的web服务设计的一般原则:
- 不要将应当在响应头中的元数据放在响应体中
- 不要将元数据放在单独的资源中,除非将其包括在内会产生很大的开销
- 请使用适当的状态码:
201 Created
创建一个资源后;该资源必须在发送响应时存在202 Accepted
成功执行操作或异步创建资源400 Bad Request
有人使用明显伪造的数据进行操作;对于你的应用来说,这可能是一个(参数)校验错误;通常将500
保留给未捕获的异常401 Unauthorized
有人访问API而未提供必须的授权验证头或凭据无效;如果你不希望通过授权验证头获取凭据,请不要使用此代码403 Forbidden
有人恶意访问API或访问者未被授权405 Method Not Allowed
例如,在应当用POST时使用PUT413 Request Entity Too Large
有人尝试发送一个不可接受的大文件时418 I'm a teapot
当你想用一个茶壶煮咖啡时 (这个规范发布于1 April 1998 滑稽)
- 尽可能使用缓存类的头:
ETag
头在当你可以很容易地将资源转换成HASH值时是很好的Last-Modified
说明在文件更新时更新时间戳是个好主意Cache-Control
和Expire
应当设置为一个合理的值
- 尽可能接受请求中的缓存头(
If-None-Modified
,If-Modified-Since
): - 请仅在有意义时使用重定向,但是对于web服务来说使用重定向的场景应该较少
记住,在没必要的时候不要在POST中使用 Content-Type: application/x-www-form-urlencoded
,用JSON或CSV可能更加简单。
夜河资源网提供的所有内容仅供学习与交流。通过使用本站内容随之而来的风险以及法律责任与本站无关,所承担的法律责任由使用者承担。
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!