전체 글

개요 Spring Security가 제공하는 AuthenticationSuccessHandler는 인증이 성공할 경우 구현하여 적용이 가능한 인터페이스이다. 이번 글에서는 이 기능이 어떻게 작동하는지 알아보고 Spring에서 제공하는 해당 인터페이스의 구현체들은 어떤 것들이 있는지 알아보려고 한다. AuthenticationSuccessHandler란? public interface AuthenticationSuccessHandler { default void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authentication) throws..
· JavaScript
json의 key는 다양한 형태로 표현될 수 있다. 예를 들어, 아래와 같이 -(dash)가 포함된 kebab-case 형태로 지정할 수 있고, 혹은 camelCase 형태로 표현할 수도 있다. example: { "hello-world": "kebab-case", "helloWorld": "camelCase" } 그런데, JavaScript에서 kebab-case 형태로 표기된 객체에 아래와 같이 접근할 경우에 error가 발생하게 된다. example.hello-world; // ReferenceError: "item" is not defined 이런 상황에서는 아래와 같은 방식으로 kebab-case 형태의 key를 가진 객체에 접근할 수 있다. example['hello-world']; // 대괄..
· Spring
개요 HTTP 요청과 함께 특정 데이터가 전달될 경우, 개발자는 이런 데이터가 올바른지 검증하는 과정이 필요하다. Java에서는 이런 데이터를 어노테이션으로 편리하게 검증할 수 있는 표준 기술을 제공하는데, 이 기술을 Bean Validation이라고 부른다. 보통 아래와 같이 Controller의 메서드에서 파라미터로 들어오는 데이터에 @Valid 혹은 @Validated(Spring에서 제공) 라는 어노테이션을 붙여서 데이터 검증을 시작한다. @ResponseStatus(HttpStatus.CREATED) @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public CategoryResponse save(@Validated @ModelAtt..
· Spring
개요 개인 프로젝트에서 multipart/form-data를 받는 수정 API 요청 메서드를 만들었고, 이를 테스트하는 과정에서 예상과 달리 405 Error가 발생해 테스트에 실패하였다. 왜 이런 문제가 생겼는지 알아보았고, 어떻게 해결하였는지 작성하려고 한다. 문제 발생 @PutMapping(path = "/{id}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public CategoryResponse update(@PathVariable Long id, @RequestParam(required = false) String name, @RequestPart(required = false) MultipartFile iconFile) { ... return c..
· Spring
개요 개인 프로젝트에 이미지 파일을 포함한 데이터를 전달하는 multipart/form-data 요청을 적용하였다. 이 기능을 테스트 하는 방법을 처음 알게되었고, 이 부분을 정리하려고 한다. multipart/form-data 적용 먼저, Spring에서 multipart/form-data 요청을 적용하는 방법을 알아보자. 아래의 코드는 현재 프로젝트에서 카테고리 저장 api 요청을 전달받는 controller의 메소드이다. @ResponseStatus(HttpStatus.CREATED) @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public CategoryResponse save(@RequestParam String name, @Req..
· Spring
개요 Spring REST Docs로 API 문서화를 적용하던 중 http-request와 response 형식을 마음대로 설정할 수 없을까 고민하였고, 알아낸 방법을 글로 정리해보았다. 적용 현재 프로젝트에서 인가가 필요한 API의 경우, access token을 Authorization header에 담아서 보내야 한다. MockMvc를 이용해 이런 API 요청을 문서화할 경우, 별도의 설정이 없다면 http-request.adoc에 access token이 그대로 보여지게 되는 문제가 발생한다. 이런 문제를 해결하기 위해서는 아래와 같이 별도의 설정을 추가해야 한다. ResultActions response = mockMvc.perform(delete("/api/liked-vouchers/{vouc..
Woong이
Woong's Blog