Springboot請求和響應相關(guān)注解及使用場景分析
在Spring Boot中,請求和響應相關(guān)的注解主要用于處理HTTP請求和構(gòu)建HTTP響應。以下是常用的請求和響應相關(guān)注解的詳細介紹,包括使用場景和示例。
1. 請求處理注解
@RequestMapping
- 描述: 用于映射HTTP請求到處理方法上。
- 使用場景: 可以用于類級別和方法級別,適用于所有HTTP方法(GET, POST, PUT, DELETE等)。
- 示例:
@RestController
@RequestMapping("/api")
public class MyController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String sayHello() {
return "Hello, World!";
}
}@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping
- 描述: 這些是
@RequestMapping的快捷形式,用于特定的HTTP方法。 - 使用場景: 用于簡化請求映射。
- 示例:
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
@PostMapping("/create")
public String createItem(@RequestBody Item item) {
return "Item created";
}
}@RequestParam
- 描述: 用于將HTTP請求參數(shù)綁定到方法參數(shù)上。
- 使用場景: 處理查詢參數(shù)。
- 示例:
@GetMapping("/greet")
public String greet(@RequestParam(name = "name", defaultValue = "World") String name) {
return "Hello, " + name;
}
@PathVariable
- 描述: 用于將URI模板變量綁定到方法參數(shù)上。
- 使用場景: 處理路徑參數(shù)。
- 示例:
@GetMapping("/items/{id}")
public Item getItem(@PathVariable("id") Long id) {
// Logic to fetch item by id
return item;
}@RequestBody
- 描述: 用于將HTTP請求體綁定到方法參數(shù)上,并使用HttpMessageConverter進行反序列化。
- 使用場景: 處理請求體中的JSON或XML數(shù)據(jù)。
- 示例:
@PostMapping("/items")
public Item createItem(@RequestBody Item item) {
// Logic to create item
return item;
}
@RequestHeader
- 描述: 將HTTP請求頭中的某個值綁定到方法參數(shù)上。
- 使用場景: 讀取特定請求頭信息。
- 示例:
@GetMapping("/user-agent")
public String getUserAgent(@RequestHeader("User-Agent") String userAgent) {
return "User-Agent: " + userAgent;
}
2. 響應處理注解
@ResponseBody
- 描述: 將方法返回值綁定到HTTP響應體上,并使用HttpMessageConverter進行序列化。
- 使用場景: 直接返回JSON或XML格式的數(shù)據(jù)。
- 示例:
@GetMapping("/items/{id}")
@ResponseBody
public Item getItem(@PathVariable("id") Long id) {
// Logic to fetch item by id
return item;
}
@RestController
- 描述: 組合注解,相當于@Controller和@ResponseBody的結(jié)合,所有方法默認返回JSON或XML格式的數(shù)據(jù)。
- 使用場景: 用于標記RESTful控制器。
- 示例:
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/items/{id}")
public Item getItem(@PathVariable("id") Long id) {
return item;
}
}@ResponseStatus
- 描述: 用于設置HTTP響應狀態(tài)碼。
- 使用場景: 將特定的狀態(tài)碼返回到客戶端。
- 示例:
@PostMapping("/items")
@ResponseStatus(HttpStatus.CREATED)
public Item createItem(@RequestBody Item item) {
return item;
}3. 異常處理注解
@ExceptionHandler
- 描述: 用于處理特定的異常,并返回自定義的響應。
- 使用場景: 處理控制器中的異常。
- 示例:
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/items/{id}")
public Item getItem(@PathVariable("id") Long id) {
if (id == null) {
throw new ItemNotFoundException("Item not found");
}
return item;
}
@ExceptionHandler(ItemNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public String handleItemNotFoundException(ItemNotFoundException ex) {
return ex.getMessage();
}
}4. CORS支持
@CrossOrigin
- 描述: 用于啟用跨域資源共享(CORS)。
- 使用場景: 允許跨域請求。
- 示例:
@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://example.com")
public class MyController {
@GetMapping("/items/{id}")
public Item getItem(@PathVariable("id") Long id) {
return item;
}
}5. 其他相關(guān)注解
@RequestAttribute
- 描述: 將請求范圍內(nèi)的屬性綁定到方法參數(shù)上。
- 使用場景: 處理在請求處理過程中設置的屬性。
- 示例:
@GetMapping("/attributes")
public String getAttribute(@RequestAttribute("myAttribute") String myAttribute) {
return "Attribute: " + myAttribute;
}
@Valid
- 描述: 用于驗證請求體中的對象。
- 使用場景: 對輸入數(shù)據(jù)進行驗證。
- 示例:
@PostMapping("/items")
public Item createItem(@Valid @RequestBody Item item) {
return item;
}
這些注解為Spring Boot提供了強大的請求和響應處理能力,幫助開發(fā)者輕松創(chuàng)建RESTful風格的API。通過合理使用這些注解,可以使代碼更加清晰和易于維護。
到此這篇關(guān)于Springboot請求和響應相關(guān)注解及使用場景的文章就介紹到這了,更多相關(guān)Springboot請求和響應內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot項目中HTTP請求對響應體進行壓縮的方法
- 運行SpringBoot項目請求響應流程分析以及404和500報錯的解決辦法
- SpringBoot請求響應方式示例詳解
- 使用springboot aop記錄接口請求的參數(shù)及響應
- SpringBoot請求參數(shù)加密、響應參數(shù)解密的實現(xiàn)
- SpringBoot接收與響應xml報文請求的實現(xiàn)
- springboot如何實現(xiàn)異步響應請求(前端請求超時的問題解決)
- springboot vue完成發(fā)送接口請求顯示響應頭信息
- SpringBoot之自定義Filter獲取請求參數(shù)與響應結(jié)果案例詳解
相關(guān)文章
SpringBoot數(shù)據(jù)層測試事務回滾的實現(xiàn)流程
這篇文章主要介紹了SpringBoot數(shù)據(jù)層測試事務回滾的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-10-10
Springboot啟動報錯Input length = 2的問題解決
最近使用Springboot啟動報錯,報錯內(nèi)容java.nio.charset.MalformedInputException: Input length = 2,下面就來介紹一下解決方法,感興趣的可以了解一下2024-08-08

