코딩마을방범대
실무에서 쓰이는 어노테이션 및 메소드 본문
728x90
컨트롤러 HTTP API들의 메소드
consumes
클라이언트가 요청을 할 때 Content-Type 헤더 값이 일치해야 요청을 처리함
ex) consumes = MediaType.APPLICATION_JSON_VALUE:
content-type값이 "application/json"일 때만 요청을 처리
@PostMapping(value = "", consumes = MediaType.APPLICATION_JSON_VALUE)
매치 되는 않는 경우엔 415 : Unsupported Media Type(지원되지 않는 미디어타입 형식이다) 응답
produces
클라이언트의 요청에 대한 응답 시 return할 데이터 타입을 명시
클라이언트가 요청을 할 때 accept 헤더의 값이 일치할 때만 요청을 처리
ex) produces = MediaType.APPLICATION_JSON_VALUE:
accept:"application/json" 이면 서버는 JSON형태로 리턴해야 함
accept 설정을 안해줬을 경우 return 타입이 상관 없다는 의미
@GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
PathVariable 의 정규표현식
아래의 경우 주소에 숫자를 넘겨줄 경우 number 메소드를 호출하게 되고,
문자열을 넘겨줄 경우 string 메소드를 호출하게됨.
@GetMapping("/user/{num:\\d+}")
public void number(@PathVariable Long num) {
}
@GetMapping("/user/{str:\\D+}")
public void string(@PathVariable String str) {
}
Bean 객체
@Lazy
스프링에서 바로 bean을 등록하는 것이 아닌 실제로 사용할 때 로딩이 이뤄지도록 하는 방법
객체의 필드 어노테이션
@Builder.Default
필드를 초기화 시킬 수 있음
@Builder.Default
private String name = "dbkim";
@ToString.Exclude
객체 toString() 시 해당 필드는 숨겨서 출력
@ToString.Exclude
private String pw;
DTO에 사용하는 JSON 어노테이션
@JsonInclude(JsonInclude.Include.NON_NULL)
null인 필드는 Json 데이터 출력 시 포함되지 않음
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApiDTO<T> {
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
해당 필드는 오직 쓰려는 경우(deserialize)에만 접근이 허용됨
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
값 | 설명 |
AUTO | 자동 |
READ_ONLY | 쓰기가 불가능하고 읽기만 가능 |
WRITE_ONLY | 읽기가 불가능하고 쓰기만 가능 |
READ_WRITE | 읽기 & 쓰기 둘 다 가능 |
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
디버깅 실행 시 application이 정상적으로 실행 되지 않을 경우 (0) | 2023.06.01 |
---|---|
웹 소켓을 이용한 메시지 전송(백엔드 - SpringBoot) (0) | 2023.06.01 |
@Valid와 @Validated (0) | 2023.05.31 |
GenerationType의 IDENTITY와 SEQUENCE (0) | 2023.05.29 |
ExceptionHandler를 통한 response 처리 (0) | 2023.05.29 |