版本控制 12.什么是RESTfulAPI RESTfulAPI的幂等性以及RESTfulAPI的经常出现留意事项 (版本控制系统会存储每个版本的全量副本)
本文目录导航:
- 12.什么是RESTfulAPI?RESTfulAPI的幂等性以及RESTfulAPI的经常出现留意事项,版本控制。
- API 是什么? RESTful API 又是什么?
- Gin框架RESTfulAPI&参数失掉
12.什么是RESTfulAPI?RESTfulAPI的幂等性以及RESTfulAPI的经常出现留意事项,版本控制。
RESTful API是一种设计格调,其全称为Representational State Transfer,便捷而言,就是资源形态转移。
这种格调关键用于构建可伸缩的网络运行程序,经过经常使用规范的HTTP恳求方法来操作资源,并且经过一致资源标识符(URI)来示意资源。
RESTful规范蕴含经常出现的HTTP方法,如:
GET用于从主机失掉资源或资源的属性。
POST在主机上创立新资源。
PUT在主机上降级现有资源或交流资源(理论用于降级一切消息)。
PATCH局部降级主机上的资源(只修正资源的一局部属性)。
DELETE从主机删除资源。
在RESTful中,失掉指定标识的资源理论经常使用HTTP的GET方法,同时在URI中蕴含标识符来惟一标识该资源。
而幂等性是RESTful API中的一个关键概念,指的是对同一个资源的屡次恳求所发生的影响与一次性恳求的影响相反。
例如,假设客户端发生网络疑问或其余要素未能收到主机的照应,可以尝试从新发送相反的恳求,而不会造成失误结果或数据重复。
幂等性的成功要求恳求的反作用相反,即对资源的形态修正在屡次恳求时发生的成果分歧。
在实践名目中,随着需求变动,API接口也须要启动变动。
为了不影响旧名目中的解决逻辑,须要有接口的版本控制。
在RESTful API中,可以经过以下模式成功版本治理:
在后续文章中,将解说如何经常使用Django-DRF框架成功RESTful API,并启动前后端分退登程。
API 是什么? RESTful API 又是什么?
API,全名 Application Programming Interface (运行编程接口),是服务方开收回的一种接口,让第三方可以额外开发、运行在自身的产品上的系统沟通接口。
以 Google Map API 为例,经常可以在各式不同的网站看见 Google Map 运行,这些网站开发者都是间接经常使用 Google Map API 来在自家网站上经常使用Google Map。
美团所经常使用的地图服务,也是由腾讯API提供的服务。
商业允许的API大都不是齐全不要钱的,基于营运考量,API提供方有或者会限度必定经常使用流量以内不要钱,超越即不要钱,Google map 和 腾讯地图都是如此。
HTTP是超文本传输协议,网络环球其实就分为客户端client、服务端server,客户端向主机端传送恳求,主机端前往资源。
网络搜物品时,输入内容、按下 enter、主机收到恳求、审核关系内容、前往资源,这就是HTTP的流程。
RESTful API是REST设计格调的API,让一切举措都可以由同一位服务生成功。
RESTful API关键由三种元件组成:HTTP恳求方法、资源定位、形态转移。
经常使用RESTful格调设计的API,可以有以下好处及限度:形态、有形态、资源定位、分层系统架构、客户端主机分别、应用HTTP协议、可口头程式码设计。
Gin框架RESTfulAPI&参数失掉
一、RESTfulAPI是什么REST是RepresentationalStateTransfer的简称,中文翻译为“表征形态转移”或“体现层形态转化”,深刻一点的话就是RESTful是一种格调,经过四个HTTP动词GET,POST,PUT,DELETE对主机资源启动操作,用传统API和RESTfulAPI做个对比图:
传统恳求模式传统URLRESTful恳求模式RESTfulURL形容说明GET/userGET/user查问用户消息POST/create_userPOST/user创立用户消息POST/update_userPUT/user降级用户消息POST/delete_userDELETE/user删除用户消息可以看出同一类的都用的一个url,只是恳求模式不同。
二、失掉参数1.失掉QueryString参数普通是指恳求中?后的参数,比如/user?username=小草:
funcmain(){r:=()(/user,func(c*){username:=(username)//假设没有,则前往//username:=(username,小草)//假设没有,则前往自动值小草(,gin.H{message:ok,username:username,})})(:8080)}2.失掉Form参数指前端经过from表单提交而来的恳求数据username:小草,比如:
funcmain(){r:=()(/user,func(c*){username:=(username)//username:=(username,小草)//DefaultPostForm取不到值时会前往指定的自动值(,gin.H{message:ok,username:username,})})(:8080)}3.失掉Path参数指恳求的数据在URL门路中,比如/user/小草:
funcmain(){//Default前往一个自动的路由引擎r:=()(/user/:username,func(c*){username:=(username)//URL中的小草对应的->(,gin.H{message:ok,username:username,})})(:8080)}4.经常使用ShouldBind()智能提取QueryString、form表单、JSON、XML等参数到结构体中
funcmain(){r:=()//绑定JSON的示例({username:小草}),form表单示例(username:小草)(/user,func(c*){varuserUseriferr:=(&user);err==nil{(,gin.H{,})}else{(,gin.H{()})}})//绑定QueryString示例(/user?username=小草)(/user,func(c*){varuserUser//ShouldBind()会依据恳求的Content-Type自行选用绑定器iferr:=(&user);err==nil{(,gin.H{,})}else{(,gin.H{()})}})(:8080)}注:经常使用ShouldBind须要留意一点,结构体须要用tag注解
typeUserstruct{Usernamestring`form:usernamejson:usernamebinding:required`}作者:小小小丶叶子著述权归作者一切。