전체 글

전체 글

    [TIL-20240805] ElasticSearch + Spring Boot 연동 오류 해결

    💻문제점1: CreatedAt 필드 타입post-mappings.json{ "properties": { "id": { "type": "long" }, "title": { "type": "text", "analyzer": "korean" }, "content": { "type": "text", "analyzer": "korean" }, "createdAt": { "type": "date", "format": "yyyy-MM-dd'T'HH:mm:ss.SSSSSS||epoch_millis" }, "imageUrl": { "type": "text" }, "tags": { ..

    [DevOps] 윈도우 ElasticSearch 8.x 다운로드 및 키바나 연동

    ElasticSearch 다운로드 및 실행먼저, 다음 페이지에서 ElasticSearch와 Kibana를 다운 받아 압축을 풀어준다.ElasticSearch 다운로드Kibana 다운로드  ElasticSearch 압축을 풀고 bin 폴더 하위의 elasticsearch 배치 파일을 직접 또는 cmd 창을 열어서 실행한다.C:\Users\...\elasticsearch-8.14.3>bin\elasticsearch  첫 실행 시 초기 비밀번호와 키바나 연결을 위한 토큰 값을 제공한다. 비밀번호 재설정비밀번호 재설정은 필요한 경우에 수행하면 된다. 1) 새로운 비밀번호 랜덤 발급cmd에서 다음을 입력하면 유저 elastic에 대한 새로운 비밀번호를 다시 발급받을 수 있다.C:\Users\...\elastics..

    [TIL - 20240612] Swagger HTTPS 설정

    💻문제점Spring REST Docs와 Swagger UI를 연동했다. 로컬에서 정상 동작하는 것을 확인하고 개발 서버로 배포해서 테스트했으나, 다음과 같은 오류가 발생했다. 개발 서버 도메인은 https를 사용한다.하지만, Request URL을 보면 http를 사용하는 것을 볼 수 있다.🔍해결Swagger가 기본적으로 http로 요청을 보내기 때문에 발생한 문제다.SwaggerConfig에서 @OpenAPIDefinition 애노테이션의 servers 속성을 사용하여 API가 호스팅 되는 서버 목록을 정의해주었다. SwaggerConfigimport io.swagger.v3.oas.annotations.OpenAPIDefinition;import io.swagger.v3.oas.annotation..

    [TIL - 20240612] Swagger Failed to load remote configuration 해결

    💻문제점1 - Failed to load remote configuration application.yamlspringdoc: default-consumes-media-type: application/json default-produces-media-type: application/json swagger-ui: disable-swagger-default-url: true path: /api/v1/docs/swagger paths-to-match: - /** SecurityConfig @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return ..

    [TIL-231219] 사용자 정의 애노테이션을 사용한 List 요소 검증

    💻문제점 게시글 등록 API 요청 시에는 요청 바디에 title, content, imageUrls, tags 필드를 포함해야 한다. public record PostAddRequest( @NotBlank @Length(min = 1, max = 20) String title, @NotBlank @Length(min = 1, max = 1000) String content, @Size(max = 5) List imageUrls, @Size(max = 5) List tags) {} 이러한 데이터를 받을 때, 각 항목에 대한 유효성 검증을 해야한다. 특히 tags와 같은 리스트 형태로 전달되는 여러 문자열 각각에 대한 길이 검증이 필요했다. 기존의 애노테이션을 사용한 검증 방식으로는 리스트의 각 요소에 대한..

    [TIL-20240307] 주간/월간/연간 섭취량 조회 API 성능 개선

    💻기존 코드주간 섭취 칼로리 조회 API는 요청한 주의 각 요일에 대한 MealType별 칼로리 값과, 전체 합산 칼로리 값을 반환한다.월간/연관 섭취 칼로리 조회 API 역시 다음 메서드를 활용한다. IntakeNutrientsService public List searchWeeklyIntakeCalories( Long memberId, LocalDate startDate, LocalDate endDate) { memberQueryService.search(memberId); return startDate .datesUntil(endDate.plusDays(1)) .map( ..

    [TIL - 20240110] 컨트롤러 나누기?!

    💻문제점 현재 MemberController 클래스만 보아도 회원 가입, 프로필 수정, 섭취량 조회 등 다양한 기능을 MemberController에서 수행한다. 너무 많은 기능이 MemberController에 존재한다. @RestController @RequiredArgsConstructor @RequestMapping("api/v1/members") public class MemberController { private final MemberService memberService; private final MemberQueryService memberQueryService; private final NutrientsQueryService nutrientsQueryService; private fin..