SpringBoot Restful 介面實現

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();
    }

    // 訪問://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;
    }

    // 訪問://localhost:8080/demo/getUser?userid=1&id=2
    // 訪問://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"}}