2017-03-26 1 views
0

현재 (HTTP put) Spring 서버에 간단한 데이터를 넣으려고합니다. 그러나 Javascript Fetch를 통해 작동하도록 할 수 없습니다. 내가 할 수이기 때문에, 내가 뭔가를 서버 측 괜찮을 것 알고JS 가져 오기 Spring> 필요한 요청 본문이 없습니다

@RequestMapping(value = "/savefcmtoken", consumes = "application/json", method = RequestMethod.PUT) 
public @ResponseBody 
String saveFCMToken(HttpServletRequest request, @RequestBody String data){ 
    JwtUser user = (JwtUser) getUser(request); 
    FCMData dataObj = new Gson().fromJson(data, FCMData.class); 
    fcmTokenService.insertIfNotExists(new FCMToken((int)user.getId(),dataObj.getToken())); 
    return "OK"; 
} 

:

"status" : 400, 
"error" : "Bad Request", 
"exception" : "org.springframework.http.converter.HttpMessageNotReadableException", 
"message" : "Required request body is missing: public java.lang.String org.mypackage.security.controller.fcm.FCMController.saveFCMToken(javax.servlet.http.HttpServletRequest,java.lang.String)" 

내 JS 코드 :

saveTokenToDB(token){ 
     fetch(Constants.server_endpoint + "/savefcmtoken", { 
      method: 'PUT', 
      headers: { 
       'Content-Type': 'application/json', 
       'Authorization': Constants.token 
      }, 
      data: JSON.stringify({token:token}) 
     }) 
      .then(response => { 
       console.log("saveTokenToDB response: " + response._bodyText); 
      }) 
      .catch((error) => console.log(" ERROR > saveTokenToDB: " + error.message)) 
    } 

그리고 봄 방법은 다음과 같은 오류를 반환 우체부에서 제대로 요청을 수행하지만, fetch 메소드를 통해이를 수행 할 때 ... 오류를 잘 보았습니다. 가져 오기가 작동하도록하려면 여기에 무엇을 구성해야합니까?

답변

3

fetch API에 따르면 json은 data이 아니라 body으로 보내야합니다. 또한 헤더는 new Headers()으로 보내야합니다. 그들을 고치려고 시도 :

saveTokenToDB(token){ 
     fetch(Constants.server_endpoint + "/savefcmtoken", { 
      method: 'PUT', 
      headers: new Headers({ 
       'Content-Type': 'application/json', 
       'Authorization': Constants.token 
      }), 
      body: JSON.stringify({token:token}) 
     }) 
      .then(response => { 
       console.log("saveTokenToDB response: " + response._bodyText); 
      }) 
      .catch((error) => console.log(" ERROR > saveTokenToDB: " + error.message)) 
    } 
+0

나는 이것을 놓친 것으로 믿을 수 없다 ... – Medardas

관련 문제