SpringBoot項(xiàng)目中rest接口定義與參數(shù)傳遞和接收方式
建議使用rest Client測(cè)試接口
方式一:form-data形式
參數(shù)以key-value形式傳遞,參數(shù)和值會(huì)直接拼接到請(qǐng)求url后邊顯示存在(POST http://localhost:8080/users/insert?id=5&userName=劉明);
適用于所有請(qǐng)求方式;
后臺(tái)接收參數(shù)時(shí)使用注解@RequestParam
POST
提交資源時(shí)一般post請(qǐng)求方式,當(dāng)然所有的增刪改也可已使用post請(qǐng)求
使用@RequestParam(value = “key”) 綁定請(qǐng)求參數(shù)到方法入?yún)r(shí),參數(shù)名可以不與前臺(tái)key一致
@RestController
@RequestMapping("/users")
public class UsersController {
@PostMapping("/insert")
public RestResult insertUserInfo(@RequestParam("userId") int id, String userName, String passWord, int age,String sex, String phone) {...}
}
請(qǐng)求參數(shù)可以這樣顯示接收,也可以從 request 中獲取
insertUserInfo(HttpServletRequest request) {
String userId = request.getParameter("userId");
String phone = request.getParameter("phone");
...
}

如果請(qǐng)求參數(shù)為定義的對(duì)象屬性時(shí),可以直接使用對(duì)象接收參數(shù)
public class User {
private int id;
private String userName;
private String passWord;
private int age;
private String sex;
private String phone;
}
@PostMapping("/insert")
public RestResult insertUserInfo(User user) {...}
DELETE
刪除資源
使用@PathVariable 獲取url路徑中的參數(shù)
@DeleteMapping("/delete/{id}")
public RestResult deleteUser(@PathVariable("id") int userId) {...}
PUT
更新資源
@PutMapping("/update/{id}")
public RestResult updateUser(@PathVariable int id, String phone) {...}

GET
獲取資源
@GetMapping("/query/{id}")
public RestResult queryUser(@PathVariable int id) {...}

方式二、content-type形式
因?yàn)镚ET請(qǐng)求頭中無content-type字段,所以此種方式只適用于POST/DELETE/PUT請(qǐng)求,用來處理:applicatin/json格式的參數(shù)
參數(shù)以json形式傳遞,后臺(tái)獲取參數(shù)時(shí)使用注解@RequestBody
@PostMapping("/insert")
public RestResult insertUserInfo(@RequestBody User user) {...}

我們也可以使用@JsonProperty 注解來綁定Json中的key和Bean實(shí)體的屬性
這時(shí)候,前臺(tái)在傳遞參數(shù)時(shí),可以使用與屬性名一致,也可以與注解中的value一致
但是這里得注意:這里返回給前臺(tái)的json對(duì)象中的key將會(huì)是直接中的值
public class User {
private Integer id;
@JsonProperty("name")
private String userName;
@JsonProperty("pass")
private String passWord;
private Integer age;
private String sex;
private String phone;
}

總結(jié)
很明顯,方式一在傳遞參數(shù)時(shí),如果傳入的參數(shù)太長時(shí),或許會(huì)超過某些瀏覽器與服務(wù)器對(duì)URL的長度限制,會(huì)導(dǎo)致請(qǐng)求失敗,因此在實(shí)際應(yīng)用中,對(duì)于GET請(qǐng)求我們一般使用form表單形式傳遞參數(shù),POST/DELETE/PUT請(qǐng)求我們考慮使用方式二;
對(duì)于請(qǐng)求參數(shù)過多的,我們可以使用Java Bean來接收參數(shù)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot RESTful API版本控制最佳方式
- 基于SpringBoot打造RESTful API實(shí)戰(zhàn)指南
- 在SpringBoot中使用RestTemplate詳解
- SpringBoot手寫RestTemplate攔截器鏈,掌控HTTP請(qǐng)求實(shí)踐
- Springboot中Controller和RestController的使用及區(qū)別
- SpringBoot @RestController注解用法及說明
- SpringBoot3使用RestTemplate請(qǐng)求接口忽略SSL證書的問題解決
- SpringBoot下使用RestTemplate實(shí)現(xiàn)遠(yuǎn)程服務(wù)調(diào)用的詳細(xì)過程
相關(guān)文章
springboot redis使用lettuce配置多數(shù)據(jù)源的實(shí)現(xiàn)
這篇文章主要介紹了springboot redis使用lettuce配置多數(shù)據(jù)源的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Spring boot route Controller接收參數(shù)常用方法解析
這篇文章主要介紹了Spring boot route Controller接收參數(shù)常用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Java多線程Runable售票系統(tǒng)實(shí)現(xiàn)過程解析
這篇文章主要介紹了Java多線程Runable售票系統(tǒng)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Java實(shí)現(xiàn)微信網(wǎng)頁授權(quán)的示例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)微信網(wǎng)頁授權(quán)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
使用?mybatis?自定義日期類型轉(zhuǎn)換器的示例代碼
這篇文章主要介紹了使用?mybatis?自定義日期類型轉(zhuǎn)換器的示例代碼,這里使用mybatis中的typeHandlers?實(shí)現(xiàn)的,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

