스프링 포스트 방법 "필수 요청 본문이 누락되었습니다.
@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"
}
POST 요청이라면 몸 안에서 JSON으로 전달해주셔야 합니다.
비슷한 문제가 있었는데, 스프링 부트 서비스에서 이 오류가 발생했습니다.
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
'programing' 카테고리의 다른 글
| asp.net 바이올린이 있습니까? (0) | 2023.06.29 |
|---|---|
| 해시 충돌 git (0) | 2023.06.29 |
| 한 줄 if-condition 할당 (0) | 2023.06.29 |
| git 커밋 서명 실패: 비밀 키를 사용할 수 없습니다. (0) | 2023.06.29 |
| 세그멘테이션 결함 처리 (0) | 2023.06.29 |

