본문 바로가기
JAVA/Error

[ Postman ][ Spring ] 400 Bad Request 오류 해결 방법

by 알기 쉬운 코딩 사전 2023. 9. 5.
반응형

💥 Postman send 버튼 클릭시 발생한 에러 메시지

400 Bad Request

 

 

❓에러 발생 이유

클라이언트와 서버에 잘못된 데이터 타입이 전송돼서 나타나는 오류 메시지입니다.
해당 오류 메시지는 Spring(Servlet, Tomcat)이 출력하는 에러 메시지입니다.

예를 들어 서버(Spring, Java)에서는 Reuqest를 int형 데이터로 받기로 설정하였지만, 클라이언트에서는 String형 데이터를 전송할 경우에 나타나는 에러입니다.

 

✅ 해결 방법

 

✔️ 해결 방법

  • Server과 Client의 Request 데이터 타입을 통일시켜 줍니다.

 

Spring의 log를 통하여 에러 메시지를 자세한 내용을 확인을 할 수 있습니다.

 

Spring의 Request 예시 코드

@Data
static class TestRequest{
    private boolean booleanTest;
    private int intTest;
    private String stringTest;

    @JsonFormat(pattern="yyyyMMddHHmmss")
    private LocalDate dateTest;

    // Object 예시
    private Address addressTest;
}

 

Json 예시

{
    "booleanTest": true,
    "intTest": 1,
    "stringTest": "tempString",
    "dateTest": "20200101123011",
    "addressTest": {
        "city": "서울",
        "street": "강가",
        "zipcode": "123-123"
    }
}

 

 

응답 결과

 

전체 Test 코드

@RestController
@RequiredArgsConstructor
public class TestApiController {

    @PostMapping("/test")
    public TestResponse test(@RequestBody TestRequest request){
        return new TestResponse(request);
    }

    @Data
    static class TestRequest{
        private boolean booleanTest;
        private int intTest;
        private String stringTest;

        @JsonFormat(pattern="yyyyMMddHHmmss")
        private LocalDate dateTest;

        private Address addressTest;
    }

    @Data
    static class TestResponse{
        private boolean booleanTest;
        private int intTest;
        private String stringTest;
        private LocalDate dateTest;

        private Address addressTest;

        public TestResponse(TestRequest request) {
            this.booleanTest = request.isBooleanTest();
            this.intTest = request.getIntTest();
            this.stringTest = request.getStringTest();
            this.dateTest = request.getDateTest();
            this.addressTest = request.getAddressTest();
        }
    }
    
    @Data
    static class Address {
        private String city;
        private String street;
        private String zipcode;
    }
}
반응형

댓글