反应:axios 发布带有参数和正文的请求

Vla*_*yan 0 model-view-controller spring reactjs react-native axios

目前我有一个 axios post 请求,可以很好地将数据发送到 Spring Boot 后端。但它只是将单个数据列表包装到 json 并将其作为请求的正文发送:

例子:

 sendAllData(data) {
return axios.post(API_URL + "receiveData",  JSON.stringify(data), 
    { headers: { "Content-Type": "application/json; charset=UTF-8" },
    }).then(response=> console.log("repsonse", response.status)) // is 201
Run Code Online (Sandbox Code Playgroud)

}

它在后端接收它:

    @RequestMapping(path = "/receiveData", method = RequestMethod.POST)
public ResponseEntity<Void> receiveData(@RequestBody Collection<ActivePOJO>  activitePOJOS) {
    //DO WORK WITH activePOJOS DATA
    return new ResponseEntity<>(HttpStatus.CREATED); 
}
Run Code Online (Sandbox Code Playgroud)

但是,除了这些信息,我还需要发送一些其他信息,如 user.id(例如),所以我需要我的后端接收这样的信息:

    public ResponseEntity<Void> receiveData(@RequestBody Collection<ActivitePOJO>  activePOJOS, Long userID)
Run Code Online (Sandbox Code Playgroud)

但我不知道我应该用哪种方式准备 axios 帖子。我应该使用 params 而不是 body 吗?

Mah*_*i N 5

您可以在使用 axios 的请求中一起使用 params 和 body。将用户 ID 作为参数发送:

sendAllData(data) {
return axios.post(API_URL + "receiveData",  JSON.stringify(data), 
    { headers: { "Content-Type": "application/json; charset=UTF-8" },
      params: { userID: 1 }, //Add userID as a param 
    }).then(response=> console.log("repsonse", response.status)) // is 201
Run Code Online (Sandbox Code Playgroud)

并在带有@RequestParam注释的控制器中接收用户 ID :

public ResponseEntity<Void> receiveData(@RequestBody Collection<ActivitePOJO>  activePOJOS, @RequestParam("userID") Long userID){
   // here you can access userID value sent from axios
}
Run Code Online (Sandbox Code Playgroud)