부트캠프/TIL
[부트캠프] TIL - 10/08
purple95
2024. 10. 8. 23:05
쿼리스트링 변수 바인딩 -> @RequestParam
가변 경로의 변수 바인딩 -> @PathVariable
Http 요청에 의한 Body 변수 바인딩 -> @RequestBody
이런 것들은 전부 binding 어노테이션. 마찬가지로
Argument Resolver 역시도 이것과 마찬가지이다.
컨트롤러의 메소드에서 조건에 맞는 파라미터가 존재한다면(조건을 만족하는지는
public class AuthUserArgumentResolver implements HandlerMethodArgumentResolver
이런 클래스를 정의하여 boolean 변수에 담아 판별하는 작업을 진행)
만약, 요청에 유저ID가 필요하다고 한다면 HTTP Authorization Bearer 헤더에 담긴 JWT의 payload 에서 정보를 가져와야한다. 이 부분은 컨트롤러의 메소드 들에서 중복적으로 반복되며 사용하기 때문에
따로 분리하여 작성한것.
그리고 Filter특강에서 이해했던 방식 또한 여기서도 적용.
Filter를 만들었다? -> Filter를 등록한다(FilterConfig)
마찬가지로 ArgumentResolver 클래스를 만들었다? -> ArgumentResolver를 등록한다(WebConfig)
@Configuration
@RequiredArgsConstructor
public class WebConfig implements WebMvcConfigurer {
여기는
WebMvcConfigurer인터페이스를 구현
이렇게 따로 안빼면
컨트롤러에서
public ResponseEntity<void> createPost(PostDto postDto, HttpServletRequest request){
String token = JwtUtil.extract(request);
ㅁ