(一)rest
1.概念
REST即表述性狀態(tài)傳遞(英文:Representational State Transfer,簡(jiǎn)稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構(gòu)風(fēng)格。它是一種針對(duì)網(wǎng)絡(luò)應(yīng)用的設(shè)計(jì)和開發(fā)方式,可以降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。
可理解為:URL定位資源,用HTTP動(dòng)詞(GET,POST,DELETE,DETC)描述操作。
語法:
URI = scheme "://" authority "/" path [ "?" query ][ "#" fragment ]
- scheme: 指底層用的協(xié)議,如http、https、ftp。
- host: 服務(wù)器的IP地址或者域名。
- port: 端口,http中默認(rèn)80。
- path: 訪問資源的路徑,就是各種 WEB 框架中定義的 Route 路由。
- query: 為發(fā)送給服務(wù)器的參數(shù)。
- fragment: 錨點(diǎn),定位到頁面的資源,錨點(diǎn)為資源 id。
項(xiàng)目中應(yīng)使用:
URI = scheme"://"authority"/"api"/"version"/"path["?"query]["#"fragment]
2.restful
復(fù)合rest風(fēng)格的接口
3.http常用方法
- get:獲取數(shù)據(jù)
- post:插入數(shù)據(jù)
- put:修改數(shù)據(jù)
- delete:刪除數(shù)據(jù)
4.名詞
例如CSDN某請(qǐng)求接口:
https://msg.csdn.net/v1/web/message/view/unread
v1代表版本號(hào),可以發(fā)現(xiàn)他的接口都是名詞,所以可以知道restful接口使用的是名詞。
例如設(shè)計(jì)一個(gè)獲取數(shù)據(jù)的接口可以這樣設(shè)計(jì):/v1/list
上面為獲取所有數(shù)據(jù),當(dāng)需要獲取某一條數(shù)據(jù)時(shí),可以這樣設(shè)計(jì):/v1/list/1
,代表獲取id為1的數(shù)據(jù)。文章來源:http://www.zghlxwxcb.cn/news/detail-433827.html
5.用法
可以設(shè)計(jì)出增刪改查的restful接口:文章來源地址http://www.zghlxwxcb.cn/news/detail-433827.html
- 獲?。?code>v1/list–>GET
- 添加:
v1/list
–>POST - 修改:
v1/list
–>PUT - 刪除:
v1/list
–>DELETE
6.應(yīng)用
@RestController
@RequestMapping("api")
@CrossOrigin
public class HelloController {
@Autowired
private UserService service;
/**
* 獲取全部列表
* @return
*/
@GetMapping("/v1/list")
public String getList(){
return "獲取全部列表";
}
/**
* 獲取列表中的一條
* @param id 通過id獲取數(shù)據(jù)
* @return
*/
@GetMapping("/v1/list/{id}")
public String getListOne(@PathVariable (value = "id") Integer id){
return "獲取列表中的" + id;
}
/**
* 往列表中添加數(shù)據(jù)
* @return
*/
@PostMapping("/v1/list")
public String insert(){
return "往列表中添加數(shù)據(jù)";
}
/**
* 修改列表數(shù)據(jù)
* @param id 修改該列表的id
* @return
*/
@PutMapping("/v1/list/{id}")
public String update(@PathVariable(value = "id") Integer id){
return "修改列表數(shù)據(jù)" + id;
}
/**
* 刪除列表數(shù)據(jù)
* @return
*/
@DeleteMapping("/v1/list")
public String delete(){
return "刪除列表數(shù)據(jù)";
}
}
7.特點(diǎn)
- 基于“資源”,數(shù)據(jù)也好、服務(wù)也好,在RESTFul設(shè)計(jì)里一切都是資源。
- 無狀態(tài)。一次調(diào)用一般就會(huì)返回結(jié)果,不存在類似于“打開連接-訪問數(shù)據(jù)-關(guān)閉連接”這種依賴于上一次調(diào)用的情況。
- URL中通常不出現(xiàn)動(dòng)詞,只有名詞 。
- URL語義清晰、明確 。
- 使用HTTP的GET、POST、DELETE、PUT來表示對(duì)于資源的增刪改查 。
- 使用JSON不使用XML 。
8.最佳實(shí)踐原則
- 使用HTTP動(dòng)詞表示增刪改查資源, GET:查詢,POST:新增,PUT:更新,DELETE:刪除 。
- 返回結(jié)果必須使用JSON 。
- HTTP狀態(tài)碼,在REST中都有特定的意義:200,201,202,204,400,401,403,500。比如401表示用戶身份認(rèn)證失敗,403表示你驗(yàn)證身份通過了,但這個(gè)資源你不能操作。
- API必須有版本的概念,v1,v2,v3 。
- 使用Token令牌來做用戶身份的校驗(yàn)與權(quán)限分級(jí),而不是Cookie。
- url中大小寫不敏感,不要出現(xiàn)大寫字母。
- 使用 - 而不是使用 _ 做URL路徑中字符串連接。
- url結(jié)尾不應(yīng)該包含斜杠"/"
- url路徑名詞均為復(fù)數(shù)
到了這里,關(guān)于restful風(fēng)格接口命名規(guī)范的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!