簡(jiǎn)書停更
本人主要在頭條號(hào)寫文章印蓖,可以關(guān)注我的頭條號(hào)【happyjava】腻脏,或者收藏我的個(gè)人博客happy的博客blog.happyjava.cn
大家可以關(guān)注我的頭條號(hào)Happyjava點(diǎn)擊跳轉(zhuǎn)
Restful簡(jiǎn)介
Restful一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格可婶,而不是標(biāo)準(zhǔn)稍计,只是提供了一組設(shè)計(jì)原則和約束條件。它主要用于客戶端和服務(wù)器交互類的軟件等缀〖侠颍基于這個(gè)風(fēng)格設(shè)計(jì)的軟件可以更簡(jiǎn)潔,更有層次尺迂,更易于實(shí)現(xiàn)緩存等機(jī)制笤妙。
隨著Restful風(fēng)格的流行,現(xiàn)在更多的人叫HTTP接口為Restful接口噪裕。所以還是很有必要了解下Restful的一些基礎(chǔ)約定的蹲盘。
Rest架構(gòu)的主要原則
網(wǎng)絡(luò)上的所有事物都被抽象為資源,使用http方法表示具體操作膳音,如下:
冪等的意思是說,多次相同的請(qǐng)求祭陷,數(shù)據(jù)是保持一致的苍凛。
restful實(shí)例參考
- 非Restful之前的url風(fēng)格
http://127.0.0.1/user/query/1 GET 根據(jù)用戶id查詢用戶數(shù)據(jù)
http://127.0.0.1/user/save POST 新增用戶
http://127.0.0.1/user/update POST 修改用戶信息
http://127.0.0.1/user/delete GET/POST 刪除用戶信息
- RESTful風(fēng)格的url
http://127.0.0.1/user/1 GET 根據(jù)用戶id查詢用戶數(shù)據(jù)
http://127.0.0.1/user POST 新增用戶
http://127.0.0.1/user PUT 修改用戶信息
http://127.0.0.1/user DELETE 刪除用戶信息
SpringBoot構(gòu)建Restful接口
基于上一節(jié)的項(xiàng)目。這里先不考慮參數(shù)接受問題兵志,將會(huì)在下一講詳細(xì)講解
- 新建一個(gè)UserController
并且在類上使用@RestController注解醇蝴。
@RestController
@RequestMapping(value = "/api/v1/users")
public class UserController {
}
這就快速創(chuàng)建出了一個(gè)Controller,與SpringMVC不同的@Controller不同的是想罕,這里使用了RestController注解悠栓,其效果等于Controller注解+ResponseBody注解的效果,即返回json格式的數(shù)據(jù)按价。
RequestMapping注解表示這個(gè)類的前置url闸迷。
- PostMapping對(duì)應(yīng)增
@PostMapping
public Object addUser() {
// 新增一個(gè)用戶
return "OK";
}
這里PostMapping不寫url,表示這個(gè)接口地址為這個(gè)Controller的前置地址
- GetMapping對(duì)應(yīng)查
@GetMapping(value = "/{userId}")
public Object getUser(@PathVariable(value = "userId") Integer userId) {
// 根據(jù)ID查找一個(gè)用戶
return "User";
}
- DeleteMapping對(duì)應(yīng)刪除
@DeleteMapping(value = "/{userId}")
public Object deleteUser(@PathVariable(value = "userId") Integer userId) {
// 根據(jù)id刪除一個(gè)用戶
return "OK";
}
- PutMapping對(duì)應(yīng)更新
@PutMapping
public Object updateUser() {
// 跟新
return "OK";
}
這里提一下PatchMapping俘枫,Patch請(qǐng)求方法也是更新操作腥沽,如果要細(xì)致的與PutMapping區(qū)分,則是PatchMapping對(duì)應(yīng)部分更新鸠蚪,PutMapping對(duì)應(yīng)整體覆蓋的更新今阳。