spring boot先後端參數傳遞方式

使用spring boot2X作後端,postman作前端測試前端

1.獲取json字符串java

@RestController
public class Demo {
    @RequestMapping("test")
    public Result test(@RequestBody JSONObject obj) {

        return  Result.success(200,obj);
    }

}

測試web

2.獲取出傳入的參數值spring

@RestController
public class Demo {
    @RequestMapping("test")
    public Result test(@RequestParam(value = "name",required = false) String name,@RequestParam(value = "id") Integer id) {

        MyData my = new MyData();
        my.setId(id);
        my.setName(name);
        return  Result.success(200,my);
    }

}

測試json

3.獲取路徑中的參數值後端

(1)經過PathVariable註解來綁定請求路徑的參數cookie

@RestController
public class Demo {
    @RequestMapping(value = "/test/{id}/{name}")
    public Result test(@PathVariable(value = "id") Integer id, @PathVariable(value = "name") String name) {

        MyData my = new MyData();
        my.setId(id);
        my.setName(name);
        return  Result.success(200,my);
    }

}

測試session

(2)指定前端url請求參數名稱與方法名一致app

@RestController
public class Demo {
    @RequestMapping(value = "test")
    public Result test(Integer id,String name) {

        MyData my = new MyData();
        my.setId(id);
        my.setName(name);
        return  Result.success(200,my);
    }

}

 (3)經過HttpServletRequest來獲取前端頁面參數dom

@RestController
public class Demo {
    @RequestMapping(value = "test")
    public Result test(HttpServletRequest request) {

        MyData my = new MyData();
        my.setId(Integer.valueOf(request.getParameter("id")));
        my.setName(request.getParameter("name"));
        return  Result.success(200,my);
    }
}

 

 (4)經過RequestParam註解來獲取

@RestController
public class Demo {
    @RequestMapping(value = "test")
    public Result test(@RequestParam(defaultValue = "0") Integer id,@RequestParam(defaultValue = "0")String name) {

        MyData my = new MyData();
        my.setId(id);
        my.setName(name);
        return  Result.success(200,my);
    }
}

4.獲取請求的報文頭

@RestController
public class Demo {
    @RequestMapping(value = "test")
    public Result test(@RequestHeader Map<String, String> map) {

        return  Result.success(200,map);
    }
}

5.請求中的cookie

@RestController
public class Demo {
    @RequestMapping(value = "test")
    public Result test(@CookieValue(value = "JSESSIONID", required = true) String jsessionId,@CookieValue(value = "name", required = true) String name) {

        return  Result.success(200,"JSESSIONID="+jsessionId+",name="+name);
    }
}

 

 

5.獲取矩陣變量綁定的參數

矩陣變量

矩陣變量能夠出如今任何路徑片斷中,每個矩陣變量都用分號(;)隔開,多個值能夠用逗號隔開

Spring4.0已經全面支持Matrix Variable,該註解似的開發人員可以將請求中的矩陣變量綁定處處理器的方法參數中

spring  boot 默認是沒法使用矩陣變量綁定參數的。須要覆蓋WebMvcConfigurer中的configurePathMatch方法

package com.example.demo.core;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.util.UrlPathHelper;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        UrlPathHelper urlPathHelper=new UrlPathHelper();
        urlPathHelper.setRemoveSemicolonContent(false);
        configurer.setUrlPathHelper(urlPathHelper);
    }

}

使用矩陣變量

@RestController
public class Demo {
    @RequestMapping(value="test/{param}")
    public Object test(@MatrixVariable(pathVar="param",value="color")String[] tt){
        for (String s : tt) {
            System.out.println(s);
        }
        return Result.success(200,tt);
    }
}

調用時也能夠寫成http://127.0.0.1:8080/test/color=red;color=green;color=blue,結果是同樣的

@RestController
public class Demo {
    @RequestMapping(value="test/{x1}/p/{x2}")
    public Object test2(@MatrixVariable(pathVar = "x1") Map<String, String[]> x1,
                        @MatrixVariable(pathVar = "x2") Map<String, String[]> x2){

        System.out.println(x1);
        System.out.println(x2);
        return x1+"-----"+x2;
    }
}

附:

Result.java

package com.example.demo.core;

import com.alibaba.fastjson.JSON;

/**
 * Created by Beibei on 19/02/22
 * API響應結果
 */
public class Result<T> {
    private int code;
    private String message;
    private T data;

    public Result setCode(Integer code) {
        this.code = code;
        return this;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public Result setMessage(String message) {
        this.message = message;
        return this;
    }

    public T getData() {
        return data;
    }

    public Result setData(T data) {
        this.data = data;
        return this;
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }

    public static <T>  Result<T> fail(Integer code,T data) {
        Result<T> ret = new Result<T>();
        ret.setCode(code);
        ret.setData(data);
        return ret;
    }

    public static <T>  Result<T> failMessage(Integer code,String msg) {
        Result<T> ret = new Result<T>();
        ret.setCode(code);
        ret.setMessage(msg);
        return ret;
    }
    public static <T>  Result<T> successMessage(Integer code,String msg) {
        Result<T> ret = new Result<T>();
        ret.setCode(code);
        ret.setMessage(msg);
        return ret;
    }

    public static <T> Result<T> success(Integer code,T data) {
        Result<T> ret = new Result<T>();
        ret.setCode(code);
        ret.setData(data);
        return ret;
    }

}
View Code

MyData.java

package com.example.demo.domain;

public class MyData {
    private int id;
    private String name;
    private String other;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getOther() {
        return other;
    }

    public void setOther(String other) {
        this.other = other;
    }

}
View Code
相關文章
相關標籤/搜索