반응형
🚨 Postman send 버튼 클릭시 발생한 에러 메시지
{
"timestamp": "2024-11-02T10:34:23.628+00:00",
"status": 400,
"error": "Bad Request",
"path": "/test"
}
❓ 에러 발생 이유
클라이언트와 서버에 잘못된 데이터 타입이 전송돼서 나타나는 오류 메시지입니다.
해당 오류 메시지는 Spring(Servlet, Tomcat)이 출력하는 에러 메시지입니다.
예를 들어 서버(Spring, Java)에서는 Reuqest를 int형 데이터로 받기로 설정하였지만,
클라이언트에서는 String형 데이터를 전송할 경우에 나타나는 에러입니다.
✅ 해결 방법
Server와 Client의 Request 데이터 타입을 통일시켜 줍니다.
수정된 Json을 참고해 주세요.
예시 Json
이전 Json
{
"booleanTest": true,
"intTest": "string",
"stringTest": "tempString",
"dateTest": "20200101123011",
"addressTest": {
"city": "서울",
"street": "강가",
"zipcode": "123-123"
}
}
수정 Json
{
"booleanTest": true,
"intTest": 1, // string 타입에서 int 타입으로 수정
"stringTest": "tempString",
"dateTest": "20200101123011",
"addressTest": {
"city": "서울",
"street": "강가",
"zipcode": "123-123"
}
}
🌟 정상 응답 결과
Spring 전체 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;
}
}
참고로 아래 Spring의 log 메시지를 통하여 자세한 내용을 확인을 할 수 있습니다.
반응형
댓글