👀 HTTP 메서드
- 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식
1. 클라이언트에게 JSON 형태 응답 최종 결과
- GET, POST 등 클라이언트에게 요청이 왔을 때 응답
2. Response 클래스
- 상태코드를 담을 클래스
public class StatusCode {
public static final int OK = 200;
public static final int CREATED = 201;
public static final int NO_CONTENT = 204;
public static final int BAD_REQUEST = 400;
public static final int NOT_FOUND = 404;
public static final int INTERNAL_SERVER_ERROR = 500;
// 추가 가능
}
- 응답 메세지 클래스
public class ResponseMessage {
public static final String PRODUCT_POST = "상품 등록 성공";
public static final String PRODUCT_READ = "상품 조회 성공";
public static final String PRODUCT_UPDATE = "상품 정보 수정 성공";
public static final String PRODUCT_PATCH = "상품 정보 일부 수정 성공";
public static final String PRODUCT_DELETE = "상품 삭제 성공";
}
- 정보를 담을 클래스
public class ProductReq {
private String name;
private Long price;
}
- 상태코드, 응답메세지, 데이터 형식을 갖춰서 응답해줄 클래스
@Data
@AllArgsConstructor
@Builder
public class DefaultRes<T>{
private int statusCode;
private String responseMessage;
private T data;
public DefaultRes(final int statusCode, final String responseMessage) {
this.statusCode = statusCode;
this.responseMessage = responseMessage;
this.data = null;
}
public static<T> DefaultRes<T> res(final int statusCode, final String responseMessage) {
return res(statusCode, responseMessage, null);
}
public static<T> DefaultRes<T> res(final int statusCode, final String responseMessage, final T t) {
return DefaultRes.<T>builder()
.data(t)
.statusCode(statusCode)
.responseMessage(responseMessage)
.build();
}
}
- Controller 예시
@PostMapping("api/product")
public ResponseEntity saveProduct(@RequestBody com.example.springboot.entity.Product product) {
productService.save(product);
return new ResponseEntity(DefaultRes.res(StatusCode.OK, ResponseMessage.PRODUCT_POST, product), HttpStatus.OK);
}
3. 응답을 적용하기 전과 후
- 적용 전
// 상품 등록
@PostMapping("api/product")
public String saveProduct(@RequestBody com.example.springboot.entity.Product product) {
productService.save(product);
return "등록되었습니다.";
}
- Postman 테스트
- 적용 후
// 상품 등록
@PostMapping("api/product")
public ResponseEntity saveProduct(@RequestBody com.example.springboot.entity.Product product) {
productService.save(product);
return new ResponseEntity(DefaultRes.res(StatusCode.OK, ResponseMessage.PRODUCT_POST, product), HttpStatus.OK);
}
- Postman 테스트