@PathVariable @RequestBody @RequestParam @RequestPart

sujin·2023년 4월 28일
0

@PathVariable

URI에 있는 내용이 변수에 바인딩 되어야할 때 사용하는 어노테이션이다.

URI 경로의 일부를 파라미터로 사용할 때 이용하며, 템플릿 변수의 값을 추출하고 그 값을 메소드 변수에 할당한다.

// http://localhost:8080/1/commnet
@PostMapping("/{postId}/comment")
public Response<CommentResponse> comment(@PathVariable Long postId, @RequestBody String content) { }

@RequestBody

클라이언트가 전송하는 Json 형태의 HTTP request body를 HttpMessageConverter를 이용하여 Java 객체의 형태로 Convert 해주는 어노테이션이다.

선택적으로는 Valid 어노테이션을 추가하여 자동 유효성 검사를 적용할 수도 있다.

@PostMapping
public Response<PostResponse> create(@RequestBody PostCreateRequest request) { }

@RequestParam

URL 뒤에 쿼리스트링으로 들어온 변수들을 변수에 바인딩할 때 사용하는 어노테이션이다.

1개의 Http 요청 파라미터를 받기 위해서 사용하며, 파라미터 여부가 default로 true 이기 때문에 파라미터가 반드시 전송되어야 한다.

→ 전송되지 않은 경우 클라이언트 오류인 400 에러가 발생한다.

// http://localhost:8080?fileName=fileName
@DeleteMapping("/file")
public Response<Void> deleteFile(@RequestParam String fileName) { }

@RequestPart

HTTP request body에 multipart/form-data 가 포함되어 있는 경우에 사용하며 스프링에서 제공하는 어노테이션이다.

MultipartFile이 포함되어 있는 경우에는 MultipartResolver가 동작하여 역직렬화를 하게 된다. → Byte로 되어있는 데이터를 객체 형태로 변환한다.

만약 MultipartFile이 포함되어있지 않다면, RequestBody와 마찬가지로 동작하게 된다.

@PostMapping("/file")
public Response<List<String>> uploadFile(@RequestPart List<MultipartFile> multipartFile) { }

0개의 댓글