浅谈RESTfulAPI
引导篇(RESTfulAPI是什么?)
REST全称是RepresentationalStateTransfer,中文意思是表现层(编者注:通常译为表征)状态转化,它首次出现在2000年RoyFielding的博士论文中。RoyFielding在论文中提到:我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。
REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力,更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深,但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。
简单来说,RESTful是一种API风格,重点!!是风格,不是什么规范。场景篇上面讲了这么多关于RESTful的知识。
下面我们来模拟使用RESTfulAPI风格来定义几个对文章操作的API。GET获取文章详情接口apiarticles:id状态码200返回详情{id:xxx,content:xxx,author:严家辉,createTime:2023030223:37:20,}获取文章列表数据接口apiarticles状态码200返回列表数据和总数{items:〔{id:xxx,content:xxx,author:严家辉,createTime:2023030223:37:20,}〕,total:100}POST新增文章接口apiarticles状态码201返回新增数据的详情{id:xxx,content:xxx,author:严家辉,createTime:2023030223:37:20,}PUT更新文章内容接口apiarticles:id状态码200返回更新后的详情{id:xxx,content:xxx,author:严家辉,createTime:2023030223:37:20,}DELETE删除一篇文章接口apiarticles:id状态码204Nocontent合起来看下
方法API用途GETapiarticles:id获取文章详情GETapiarticles获取文章列表POSTapiarticles新增文章PUTapiarticles:id更新文章DELETEapiarticles:id删除文章RESTful的核心思想就是,客户端发出的数据操作指令都是动词宾语的结构。
用一句话来描述RESTfulAPI就是URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。看URL就知道要什么
看HTTPMethod就知道干什么
看HTTPStatusCode就知道结果如何
引知乎高赞回答徐磊使用RESTfulAPI遇到的问题
可以先看看对用户的其他操作吧
方法API用途GETapiusers:id获取用户信息GETapiusers获取用户列表POSTapiusers新增用户PUTapiusers:id更新用户信息DELETEapiusers:id更新用户信息
看着好像没啥问题。
上面我们都在操作users资源,那用户的登录怎么使用RESTfulAPI?但是HTTPMethod里面压根没有一个叫登录的动词让我们直接操作users的登录。怎么办呢?
难道是使用apilogin?
当然不行login已经是动词了,按照RESTfulAPI的风格,URL只能是用来表示资源主体的名词?且推荐使用复数。
其实登录我们也是操作一个资源,这个资源就是session。
所以我们可以定义登录登出为
方法API用途POSTapisessions登录DELETEapisessions登出优点提供简单的URL结构,可以更容易地理解和记忆。每个API专注做一件事,提高各种组合的可能性。支持多种HTTP方法,如GET、POST、PUT和DELETE,可以更容易地实现不同的操作。
因此,RESTfulAPI可以提供一种简单、灵活的方式来构建Web服务,可以更容易地实现服务器端的性能优化,也可以更容易地实现跨域数据共享。缺点若一次需要操作多个资源,还需要多个请求request,效能方面较差网络上所有东西都是资源,需要正确将资源抽象化,写出资源的URI,并使用正确的动词(HTTPMethod)去操作它。总结
RESTful的核心思想就是,客户端发出的数据操作指令都是动词宾语的结构。用一句话来描述RESTfulAPI就是URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。
RESTfulAPI一般看是场景来使用的,因为毕竟只是一种API风格。
如果你的团队有自己的风格或者规范,那么按照团队的来就行,保持风格一致就是最好的,当然如果你想进行尝试尝试,推荐在新模块中进行使用,不然显得有点突兀。
就像下面这样apiprojectdatainfo:idapiprojectmostusedprojectlist
突然变成了apiprojects:idapiprojects
推荐新项目小项目可以尝试着使用一下RESTfulAPI,对于我这个不太喜欢命名的人来说,RESTfulAPI是个不错的选择。参考文献https:www。zhihu。comquestion28557115https:segmentfault。coma1190000020029993