SpringBoot 核心註解
註解 | 說明 |
---|---|
Component | 宣告為 SpringBoot 的 bean |
Repository | 用於 dao 層的 bean |
Autowired | 用於向一個 bean 中注入其他 bean |
Service | 用於 service 層的 bean |
Configuration | 用於宣告 SpringBoot 的配置檔案類 |
Value("${key)") | 獲取 SpringBoot 配置檔案中的值 |
Bean | 宣告其為 bean 例項,常和 Configuration 配合使用 |
SpringBoot Restful 介面實現
註解 | 說明 |
---|---|
SpringBootApplication | SpringBoot 主類,用來載入 SpringBoot 各種特性 |
RestController | SpringBoot 會轉換返回值並自動將其寫入 HTTP 響應 |
RequestMapping | 用於類和方法,在方法級別時,用於處理 HTTP 的各種方法 |
RequestBody | 將請求 Body 中的 json/xml 物件解析成該引數型別的 JavaBean 物件 |
PathVariable | 處理動態 URI,即 URI 的值可以作為控制器中處理方法的入參 |
Post/Put/Get/DeleteMapping | 在方法的級別上使用,在方法級別時,用於處理 HTTP 的各種方法 |
RequestParam | 處理 get 請求的引數 |
程式碼示例:
package com.example.apitestplatform.controller;
import com.example.apitestplatform.entity.User;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value="demo") // 類中所有介面地址的字首
public class DemoController {
// @RequestMapping(value="loginGet", method= RequestMethod.GET)
@GetMapping("loginGet")
public String loginGet() {
return "登入成功";
}
// @RequestMapping(value="loginPost", method= RequestMethod.POST)
@PostMapping("loginPost") // 簡便寫法
public String loginPost(@RequestBody User user) { // 如果沒用 @RequestBody,則獲取結果為 null
System.out.println("username : "+user.getUsername());
System.out.println("password : "+user.getPassword());
return "登入成功:"+user.getUsername();
}
// 訪問:http://localhost:8080/demo/userId/1/2
// @RequestMapping(value="userId/{userId}/{id}", method=RequestMethod.GET)
@GetMapping("getUser/{userid}/{id}")
public String loginUser1(@PathVariable("userid") Integer userid, @PathVariable("id") Integer id) {
System.out.println("userid : "+userid);
System.out.println("id : "+id);
return "userid: "+userid+" id: "+id;
}
// 訪問:http://localhost:8080/demo/getUser?userid=1&id=2
// 訪問:http://localhost:8080/demo/getUser?user=1&id=2,則 userid 值為 null
@GetMapping("getUser")
public String loginUser2(@RequestParam(value="userid", required=false) Integer userid, // required=false:引數非必須傳
@RequestParam("id") Integer id) {
System.out.println("userid : "+userid);
System.out.println("id : "+id);
return "userid: "+userid+" id: "+id;
}
}
封裝響應資料
響應物件類:
package com.example.apitestplatform.common;
import lombok.Builder;
import lombok.Data;
@Data
@Builder // 作用:呼叫時使用鏈式寫法
public class ResultResponse {
private String code;
private String message;
private Object data;
}
介面類:
@GetMapping("loginSuccess")
public ResponseEntity loginSuccess() {
User user = new User();
user.setUsername("xiaoming");
user.setPassword("admin123");
ResultResponse resultResponse = ResultResponse.builder().code("00").message("登入成功").data(user).build();
return ResponseEntity.status(HttpStatus.OK).body(resultResponse);
}
@GetMapping("loginFail")
public ResponseEntity loginFail() {
User user = new User();
user.setUsername("xiaoming");
user.setPassword("admin123");
ResultResponse resultResponse = ResultResponse.builder().code("02").message("登入失敗").data(user).build();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultResponse);
}
請求結果:
{"code":"00","message":"登入成功","data":{"username":"xiaoming","password":"admin123"}}
{"code":"00","message":"登入失敗","data":{"username":"xiaoming","password":"admin123"}}