RESTful规范

推荐博客:https://www.cnblogs.com/GGGG-XXXX/p/9564651.html
RESTful规范
我们在浏览器中能看到的每个网站,都是一个web服务。那么我们在提供每个web服务的时候,都需要前后端交互,前后端交互就一定有一些实现方案,我们通常叫web服务交互方案
目前主流的三种web服务交互方案:
    -- REST ( Representational State Transfer)表述性状态转移
    -- SOAP (Simple Object Access Protocol)  简单的对象访问协议
    -- XML-RPC (XML Remote Procedure Call)基于XML的远程过程调用
RESTful
	表征性状态转移。这里所说的表征性,其实指的就是资源。通常我们称为资源状态转移
	资源:任何事物,只要有被引用到的必要,它就是一个资源,不仅包括文本图片视频也包括抽象的概念,比如两个人的关系.资源在web中的唯一标识URI
	URI 统一资源标志符。
  	URL 统一资源定位符。(URL可以说是URI的子集,通过定位的方式实现的URI。)
  	URI是给我们的资源进行标识的,URL是描述我们资源地址的。
	统一资源接口:只使用一个URL,然后根据HTTP请求方式的不同,对资源进行不同的操作,这个就是是统一资源接口
	资源的表述:资源的表述其实就是资源的展现形式,我们客户端和服务端传输的都是资源的表述,而不是资源本身。
	状态转移:从当前资源的表述(也可以说状态或者表现层)会跳转到其他的资源状态,通过超链接的指引,实现"表现层状态转移"
	总结:
		(1)在web中,只要有被引用的必要都叫资源。
  		(2)每个URI代表一个资源,独一无二的。
  		(3)客户端通过HTTP的方法,对服务器端资源进行操作;
  		(4)客户端和服务器之间,传递这种资源的某种表现层;
  		(5)通过超链接的指引,实现"表现层状态转移"。
	10条规范:
		1. 面向资源编程
			每个URL代表一种资源,URL中尽量不要用动词,要用名词。
		2. 根据method不同,进行不同的操作
			GET/POST/PUT/DELETE/PATCH
		3. 在URL中体现版本
			https://www.bootcss.com/v1/mycss
  			https://v1.bootcss.com/mycss
		4. 在URL中体现是否是API
			https://www.bootcss.com/api/mycss
  			https://api.bootcss.com/mycss
		5. 在URL中的过滤条件
			https://www.bootcss.com/v1/mycss?page=3
		6. 尽量使用HTTPS
			https://www.bootcss.com/v1/mycss
		7. 响应时设置状态码
			1**   信息,服务器收到请求,需要请求者继续执行操作
  		        2**  成功,操作被成功接收并处理
  		        3**  重定向,需要进一步的操作以完成请求
  		        4**  客户端错误,请求包含语法错误或无法完成请求
  		        5**  服务器错误,服务器在处理请求的过程中发生了错误

			2xx:成功
			200:OK,请求成功
			201:OK,新的资源建立(post命令)
			202:请求被接受,但处理未完成
			204:OK,但没有内容返回
			------------------------------------------------------------------------
			3xx:重定向:需要用户代理执行更多的动作
			301:Moved Permanently永久转移(所请求的资源已被指派为新的固定URL)
			302:Found 暂时转移(所请求的资源临时位于另外的URL)
			304:文档没有修改(条件GET)
			307:Temporary Redirect(临时重定向)
			------------------------------------------------------------------------
			4xx:客户差错
			400:Bad Request 请求错误
			401:Unauthorized 未认证(该请求要求用户认证)
			403:Forbidden 	不明原因的禁止
			404:Not Found 	未找到
			------------------------------------------------------------------------
			5xx:服务器差错
			500:Internal Server Error(服务器错误)
			501:没有实现
			502:错误的网关(网关或上游服务器来的无效响应)
			503:Service Unavailable(一般是访问人数过多)
		8. 返回值
			GET请求 返回查到所有或单条数据
  			POST请求  返回新增的数据
  			PUT请求  返回更新数据
  			PATCH请求  局部更新  返回更新整条数据
  			DELETE请求  返回值为空
		9. 返回错误信息
			返回值携带错误信息
		10. Hypermedia API
			如果遇到需要跳转的情况 携带调转接口的URL
			ret = {
			code: 1000,
			data:{
				id:1,
				name:'小强',
				depart_id:http://www.luffycity.com/api/v1/depart/8/
			}
		}

  

原文地址:https://www.cnblogs.com/perfey/p/9948534.html