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 自動轉換返回值類型,並將其寫入 HTTP 響應
RequestMapping 用於定義接口請求方法和請求地址。可用於類和方法上
RequestBody 將請求 Body 中的 json/xml 對象解析成對應的 JavaBean 對象
PathVariable 處理動態 URI,即 URI 中的值可以作為接口入參
Post/Put/Get/DeleteMapping 簡便寫法:定義接口請求方法和請求地址
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 {

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

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

}

封裝業務響應數據

響應對象類:

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":"02","message":"登錄失敗","data":{"username":"xiaoming","password":"admin123"}}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM