首頁 > 軟體

SpringBoot如何接收Post請求Body裡面的引數

2022-03-15 13:03:31

如何接收Post請求Body裡的引數

ApiPost測試資料

{
    "list": [
        "{'time':'xxxxx','distinct_id':'xxxx','appId':'xxxx'}",
        "{'time':'xxxxx','distinct_id':'xxxx','appId':'xxxx'}",
        "{'time':'xxxxx','distinct_id':'xxxx','appId':'xxxx'}",
        "{'time':'xxxxx','distinct_id':'xxxx','appId':'xxxx'}"
    ],
    "type": 1
}

Java接收資料

需要提前建立好對應的Bean

由於傳遞過來的資料是String型別,因此需要轉換一步

import cn.hutool.json.JSONObject;
@PostMapping("/data/callback")
    public Object testResponse(
            @RequestBody JSONObject jsonObject
    ) {
        JSONArray jsonList = jsonObject.getJSONArray("list");
        ArrayList<DataEntity> list = new ArrayList<>();
        for (Object jsObject : jsonList){
            DataEntity dataEntity = JSONObject.parseObject(jsObject.toString(), DataEntity.class);
            list.add(dataEntity);
        }
        Integer type = (Integer) jsonObject.get("type");
        log.info(String.format("本次共接收%d條資料,type=%d",list.size(),type));
        for (DataEntity dataEntity : list) {
            log.info(dataEntity.toString());
        }
    }    

SpringBoot獲取引數常用方式

引數在body體中

在方法形參列表中新增@RequestBody註解

@RequestBody 作用是將請求體中的Json字串自動接收並且封裝為實體。如下:

@PostMapping("/queryCityEntityById")
public Object queryCityEntityById(@RequestBody CityEntity cityEntity)
{
    return ResultUtil.returnSuccess(cityService.queryCityById(cityEntity.getId()));
}

PathVaribale獲取url路徑的資料

如下:

@RestController
public class HelloController {
    @RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET)
    public String sayHello(@PathVariable("id") Integer id,@PathVariable("name") String name){
        return "id:"+id+" name:"+name;
    }
}

RequestParam獲取請求引數的值

獲取url引數值,預設方式,需要方法引數名稱和url引數保持一致 

localhost:8080/hello?id=1000,如下:

@RestController
public class HelloController {
    @RequestMapping(value="/hello",method= RequestMethod.GET)
    public String sayHello(@RequestParam Integer id){
        return "id:"+id;
    }
}
 

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com