Spring Boot 🍃
-
Spring Boot : intelliJ에서 HTTP API 테스트시 POST 요청으로 CSRF 토큰과 Json데이터 보내기Spring Boot 🍃 2023. 12. 17. 00:01
security 설정으로 csrf 옵션을 꺼놓지 않는 이상 csrf 토큰을 함께 전달해야 한다. csrf는 user 인증 후 /logout 주소로 get 요청 보내서 얻어냄 😬 CSRF 토큰과 JSON 데이터를 함께 보낼때 Header에 csrf 정보 및 json content-type 추가 X-CSRF-Token: csrf토큰 Content-Type: application/json Body에 Json 데이터 입력 { "key": "value" } 실행 확인!
-
Spring Boot : intelliJ에서 HTTP API 테스트시 Security HTTP 기본 인증 Header 설정 및 로그아웃Spring Boot 🍃 2023. 12. 17. 00:01
HTTP 기본 인증 Header 설정 Spring Security 의존성 추가 후 서버를 동작시키면 HTTP Basic 인증을 거쳐야 api 통신을 할 수 있다. HTTP Basic 인증은 base64로 인코딩 되기 때문에 아래 사이트를 통해 아이디, 비밀번호를 base64로 인코딩 한 후 header에 함께 보내면 된다. https://www.base64decode.org/ 인코딩 할 데이터 형태 Username:Password header 요청 데이터 형태 Authorization: Basic base64EncodedData 로그아웃 1. /logout 주소로 GET 요청을 보내서 csrf 값을 복사한다. 2. /logout 주소로 POST 요청으로 csrf 값을 보낸다. 이때 Content Type..
-
Spring Boot : @JsonFilter와 HATEOAS 함께 사용해보기Spring Boot 🍃 2023. 12. 17. 00:01
시나리오 사용자 목록 및 정보 조회 api 요청에 대한 응답 시 User 도메인 객체의 필드 중에 이름, 가입일, 시퀀스만 노출해야 하고, HATEOAS를 적용해 보기로 했다. url 변경이 발생해도 클라이언트 사이드 작업에는 영향이 미치지 않기 때문이다. api 응답시 필드 몇가지는 비노출 하기로 했지만, swagger를 통한 도메인 객체 정보 조회시 모든 필드 정보를 출력해야 한다. 특이사항 정리 api 응답 시 User 도메인 객체에서 몇 가지 필드(이름, 가입일, 시퀀스)만 출력할 것 swagger 문서 조회시 User 도메인 객체의 모든 필드 정보 확인 가능 HATEOAS 적용 User 도메인 객체 정의 @Schema(description = "사용자 상세 정보를 위한 도메인 객체") @Data..
-
Spring Boot : SpringDoc 문서에 설명 달기Spring Boot 🍃 2023. 12. 17. 00:01
참고 https://colabear754.tistory.com/99 https://springdoc.org/#migrating-from-springfox Spring Boot 2.7.17에서 실행 확인 SpringDoc 의존성 추가 implementation "org.springdoc:springdoc-openapi-ui:1.7.0" SwaggerConfig 설정파일 작성 @Configuration public class SwaggerConfig { @Bean public OpenAPI openAPI() { return new OpenAPI() .components(new Components()) .info(new Info() .title("REST API 테스트 제목") .description("이것은..
-
Spring Boot : Validation 예외 Advice로 관리하기Spring Boot 🍃 2023. 12. 17. 00:01
1. 예외 응답 객체 생성 - Valid 예외 출력 객체 ValidExceptionResponse.java @Getter @Builder public class ValidExceptionResponse { private String field; private String message; } - 예외 응답 객체 ExceptionResponse.java @Getter @Builder public class ExceptionResponse { private LocalDateTime timestamp; private String message; private t details; } 2. Advice 클래스 작성 MyExceptionHandler.java @RestControllerAdvice public cla..
-
Spring Boot : ServletUriComponentsBuilder 사용해보기Spring Boot 🍃 2023. 12. 17. 00:01
시나리오 유저 생성 api 요청이 들어오면 유저를 생성하고 , 요청 결과로 새로운 리소스가 생성되었기 때문에 201 상태 코드와 생성된 유저의 상세정보를 볼 수 있는 주소값을 header에 담아 반환하기 위해 ServletUriComponentsBuilder 를 사용한다. > ServletUriComponentsBuilder 자세한 정보 : pooney.tistory 컨트롤러 @PostMapping("/users") public ResponseEntity createUser(@RequestBody User user) { User saved = service.save(user); URI location = ServletUriComponentsBuilder .fromCurrentRequest() .path(..
-
Spring Boot AOP 예제 (링크)Spring Boot 🍃 2023. 12. 16. 00:03
https://programforlife.tistory.com/107 https://velog.io/@backtony/Spring-AOP-총정리 AOP Aspect Oriented Programming : 관점 지향 프로그래밍 애플리케이션에서 공통된 관심사에 대해 구현할 때 사용한다. 예를 들면 메서드에 들어오는 값들에 대한 로깅 기록, 메서드 실행 시간 측정으로 서버 부하 확인, 들어오는 대부분의 값들에 대한 전처리/가공이 필요한 경우 값에 대한 가공을 AOP로 처리. 스프링의 핵심으로 IoC, DI, AOP 를 꼽기에 AOP는 기본 제공되는 기능인줄 알았는데 의존성 추가를 해줘야 사용할 수 있는 기능이어서 놀라웠다. 🤨
-