1. 1restful是基于资源的,面向资源架构风格(一个链接,一张图、一个文本等等)
  2. 2restfulhttp协议
  3. 2.1 url
  4. 2.1.1 port 服务端口,默认为80
  5. 2.1.2 path 访问资源的路径
  6. 2.1.3 query-string 发送给http服务器的数据
  7. 2.1.4 anchor
  8.  
  9. 2.2 请求 组成格式:请求行、消息报头、请求正文
  10. 请求行格式: Method Request-URI HTTP-Version CRLF
  11. 例子: GET / HTTP/1.1 CRLF
  12.  
  13. 2.3请求方法
  14. GET :请求获取Request-URI的所表示的资源
  15. POST :在Request-URI所标识的资源后附加新的数据
  16. HEAD :请求获取由Request-URI所标识的资源的相应消息包头
  17. PUT 请求服务器存储一个资源,并用Request-URI作为其标识
  18. DELETE :请求服务器删除Request-URI所表示的资源
  19. OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项请求
  20.  
  21. 2.4 响应 组成格式:状态行、消息报头、响应正文
  22. 状态行格式 HTTP-Version Status-Code Reason-PhRase CRLF
  23. 例子:HTTP/1.1 200 OK
  24.  
  25. 2.5 常用状态码
  26. 200 ok //客户端请求成功
  27. 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  28. 401 Unauthorized //服务器收到请求,但是拒绝提供服务,需要授权访问
  29. 404 Not Found //请求资源不存在
  30. 500 Internal Server Error //服务器发生不可预期的错误
  31. 503 Server Unavailable //服务器当前不能处理客户端请求,一般服务器达到性能瓶颈拒绝服务
  32.  
  33. 3、如何设计RESTful API
  34.  
  35. 3.1 资源路径(URI
  36. 概念:在RESTful架构中,每个网址代表一种资源,所以网址中不能有动词,只能用名词。一般来说API中的名词应该使用复数
  37. 举例:有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样
  38. https://api.example.com/v1/zoos //动物园资源
  39. https://api.example.com/v1/animals/2 //动物园资源
  40.  
  41. 3.2 HTTP动词
  42. 概念:对于资源的操作(CURD),由HTTP动词表示
  43. GET:从服务器获取资源(一项或多项)
  44. POST:在服务器新建一个资源
  45. PUT:在服务器更新资源(客户端提供改变后的完整资源)
  46. PATCH:在服务器更新资源(客户端提供改变的属性)【注意】:这个不常用,更新一般都用PUT,用PUT更新会返回所有字段,而用PATCH更新只会返回更新的字段
  47. DELETE:从服务器删除一个数据
  48.  
  49. 举例:
  50. POST /zoos:新建一个动物园
  51. GET /zoos/ID:获取某个指定动物园的信息
  52. PUT /zoos/ID:更新某个指定动物园的信息
  53. DELETE /zoos/ID:删除某个动物园
  54.  
  55. 3.3 过滤信息
  56. 概念:如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果
  57. 举例:
  58. ?offset=10:制定返回记录的开始位置
  59. ?page=2&per_page=100:制定第几页,以及每页的记录数
  60. ?sortby=name&order=asc:制定返回结果排序,以及排序顺序
  61. ?animal_type_id=1:制定筛选条件
  62.  
  63. 3.4 状态码
  64. 200 ok 服务器成功返回用户请求的数据,该操作是幂等的
  65. 201 CREATED 新建或修改数据成功
  66. 204 NO CONTNET 删除数据成功
  67. 400 BAD REQUEST 用户发出的请求有错误,该操作是幂等
  68. 401 Unauthorized 表示拥护没有认证,无法进行当前操作
  69. 403 Forbidden 表示拥护访问时被禁止的
  70. 422 Unprocesable Entity 当创建一个对象时,发生一个验证错误
  71. 500 INTERNAL SERVER ERROR 服务器发生错误,用户将无法判断发出的请求是否成功
  72.  
  73. 3.5 错误处理
  74. 概念:如果状态码是4xx或者5xx,就应该像用户返回错误信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可
  75. {
  76. 'error' : '参数错误'
  77. }
  78.  
  79. 3.6 返回结果
  80. 针对不同操作,服务器向用户返回的结果应该符合以下规范:
  81. GET /collections:返回资源对象的列表(数组)
  82. GET /collections/identity:返回单个资源对象
  83. POST /collections:返回新生成的资源对象
  84. PUT /collections/identity:返回完整的资源对象
  85. PATCH /collections/identity :返回被修改的属性
  86. DELETE /collections/identity : 返回一个空文档
  87.  
  88. 4google商店搜索restful api client找到 Restlet Client-REST API Testing,安装调试restful工具
  89.  
  90. 5、项目实例
  91.  
  92. 项目需求:用户登陆、注册
  93. 文章发表、编辑、管理、列表
  94. 分析资源:用户(user) 、文章(article
  95. 资源路径:/user /article
  96. HTTP动词:POSTGETPUTDELETE
  97. 过滤信息:文章分页筛选
  98. 状态码:200404422403
  99. 错误处理:输出json格式错误信息
  100. 返回结果:输出json数组或者json对象

https://blog.csdn.net/jj546630576/article/details/77948445

php Restful设计的更多相关文章

  1. RESTful 设计理论

    RESTful 设计: 1.协议通信协议:https 2.域名部署在API专用域名下,除非API很简单(https://www.example.com/api)https://api.example. ...

  2. Restful设计思想

    1.REST的架构设计 代表性状态传输(Representational State Transfer,REST)在Web领域已经得到了广泛的接受,是基于SOAP和Web服务描述语言(Web Serv ...

  3. [RESTful] 设计要素

    如何设计RESTful API 资源路径(入何规划资源路径) HTTP动词(请求方式 GET/POST...) 过滤信息(分页,查询操作的时候进行信息过滤) 状态码(服务器端响应什么样的状态码) 错误 ...

  4. django RESTful设计方法

    1. 域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https://example.org ...

  5. RESTful设计方法

    REST REST,即Representational State Transfer的缩写.维基百科称其为“具象状态传输”,国内大部分人理解为“表现层状态转化”. RESTful是一种开发理念.维基百 ...

  6. restful设计参考

    https://www.cnblogs.com/pyspark/p/8599210.html 以下查阅多处文档,思考总结: 所谓restful规范代表一种理想状态,首先对此种规范表示赞同,但应不忘实事 ...

  7. RESTful设计中的常见疑问

    最近写了几个有关RESTful的API相关内容,也谈谈对常见问题的自己的理解. 什么是RESTful 详情可以看http://www.ruanyifeng.com/blog/2011/09/restf ...

  8. Java Web学习(八)RESTful设计

    一.RESTful设计风格 REST :指的是一组架构约束条件和原则. RESTful :满足这些约束条件和原则的应用程序或设计就是 . REST 原则 客户端和服务器之间的交互在请求之间是无状态的. ...

  9. RESTful设计

    RESTful架构: (1)每一个URI代表一种资源: (2)客户端和服务器之间,传递这种资源的某种表现层: (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化& ...

随机推荐

  1. Vue--通过button跳转到其他组件并携带id参数

    一.创建vue文件 ’ <template> <div> goodsCommon<br/> goodsCommon<br/> goodsCommon&l ...

  2. SSH 相关基础

    检查是否安装: sudo apt-cache policy openssh-client sudo apt-cache policy  openssh-server 也可直接用 sudo apt-ca ...

  3. 统计Linux下的CPU状态信息

    def cpu(): all_cpus=[] with open('e:/cpu.txt') as f: core={} for line in f.readlines(): ab=line.spli ...

  4. Spring MVC使用ModelAndView进行重定向(转)

    1.Servlet重定向forward与redirect: 使用servlet重定向有两种方式,一种是forward,另一种就是redirect.forward是服务器内部重定向,客户端并不知道服务器 ...

  5. SQLSERVER 时间函数汇总

    1.求当天的年份 (getdate(): 2012/05/08 18:07:26) SELECT YEAR(GETDATE())     --2012 2. 求当天的月份       SELECT M ...

  6. typescript+react+antd基础环境搭建

    typescript+react+antd基础环境搭建(包含样式定制) tsconfig.json 配置 // 具体配置可以看上面的链接 这里module moduleResolution的配置都会影 ...

  7. [Vue CLI 3] 配置解析之 parallel

    官方文档中介绍过在 vue.config.js 文件中可以配置 parallel,作用如下: 是否为 Babel 或 TypeScript 使用 thread-loader. 该选项在系统的 CPU ...

  8. python os 模块介绍

    """ 重命名文件 os.rename(src,dst) os.rename('123.txt','124.txt') 删除文件 os.remove(path) os.r ...

  9. Nginx教程(一) Nginx入门教程 (转)

    1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由俄罗斯的程序设计师IgorSysoev所开 ...

  10. Hdu 4291

    题目链接 这道题, 给我的最大的知识点就是对于去模运算,一定可以找到循环节,这题只不过是嵌套了两层,可以分别找到循环节.关于这题如何找循环节的,直接暴力,网上也有很多. 找到循环节之后,另一个知识点就 ...