programing

스프링 포스트 방법 "필수 요청 본문이 누락되었습니다.

jooyons 2023. 6. 29. 20:04
반응형

스프링 포스트 방법 "필수 요청 본문이 누락되었습니다.

@PostMapping(path="/login")
public ResponseEntity<User> loginUser(@RequestBody Map<String, String> userData) throws Exception {
    return ResponseEntity.ok(userService.login(userData));
}

이 방법으로 사용자 컨트롤러에 로그인할 수 있습니다.문제는 로그인에 대한 게시 요청을 시도할 때 다음 오류가 발생한다는 것입니다.

{
"timestamp": "2018-10-24T16:47:04.691+0000",
"status": 400,
"error": "Bad Request",
"message": "Required request body is missing: public org.springframework.http.ResponseEntity<org.scd.model.User> org.scd.controller.UserController.loginUser(java.util.Map<java.lang.String, java.lang.String>) throws java.lang.Exception",
"path": "/users/login"
}

enter image description here

POST 요청이라면 몸 안에서 JSON으로 전달해주셔야 합니다.

enter image description here

비슷한 문제가 있었는데, 스프링 부트 서비스에서 이 오류가 발생했습니다.

Http 메시지를 읽을 수 없음예외: 필요한 요청 본문이 없습니다.

제 문제는 포스트맨에서 요청을 할 때 "Content-Length" 헤더가 선택되지 않았기 때문에 서비스에서 요청 본문을 고려하지 않았다는 것입니다.

서버에 본문을 전달하지 않기 때문에 이 문제가 발생합니다.스크린샷에서 볼 수 있듯이 이메일과 암호를 ResquestParam으로 전달하고 있습니다.

이 값을 처리하려면 다음을 수행합니다.

@PostMapping(path="/login")
public ResponseEntity<User> loginUser(@RequestParam("email") String email, @RequestParam("password") String password) {
     //your imp
}

빈 본문을 수락하려면 다음을 사용할 수 있습니다.requiredRequestBody 주석의 매개 변수:

@RequestBody(required = false)

하지만 이것은 당신의 문제를 해결하지 못할 것입니다.RequestParam이 수신합니다.

RequestBody를 사용하려면 이메일과 암호를 본문에 전달해야 합니다.

Body의 데이터를 JSON으로 전송해야 합니다.

 { "email":"email@email.com", "password":"tuffCookie"}

그래도 작동하지 않으면 추가 정보를 추가합니다.UTF-8머리글에 있습니다.

키:Content-Type값:application/json; charset=utf-8

나의 경우, 나는 추가해야 합니다.UTF-8머리글에 있습니다.

저의 경우 REST 서비스에 보낸 JSON은 제대로 정의되지 않았습니다.

개체로 추정되는 속성은 제 경우 문자열에 불과했습니다.

변경됨:

"client" = "",

대상:

"client" = { ... },

내 경우 String은 다른 형식의 값에 대한 추가 정보를 추가하지 않았습니다.

언급URL : https://stackoverflow.com/questions/52974330/spring-post-method-required-request-body-is-missing

반응형