SpringBoot Restful 介面實現

Juno3550 發表於 2022-06-03
Spring


SpringBoot 核心註解

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"}}