Query Methods Select API

song yuheon·2023년 8월 29일
0

Spring

목록 보기
16/93
post-thumbnail

  • 주제 Query Methods를 활용하여 'contents' 필드에 주어진 키워드가 포함된 메모를 검색하는 API를 개발하십시오.

  • API 세부 사항
    1. Controllerkeyword를 쿼리 스트링으로 수신하여 메모 조회 API를 제공합니다.
      • URL 패턴: http://localhost:8080/api/memos/contents?keyword=
      • 메서드 명칭: getMemosByKeyword
    2. MemoService 클래스 내에 getMemosByKeyword 메서드를 구현하십시오.
    3. 테스트는 Postman 어플리케이션을 사용하여 수행하십시오.
    4. 결과 데이터의 정렬 순서는 '수정 시간' 기준 내림차순으로 합니다.
    5. 구현 방법에 대한 참고 자료는 "Query Methods contains" 키워드로 구글 검색을 이용하거나, Spring Data JPA 공식 문서를 참조하십시오.

  • 구현 코드

    1. MemoRepository
    public interface MemoRepository extends JpaRepository<Memo, Long> {
        List<Memo> findAllByContentsContainingOrderByModifiedAtDesc(String keyword);
    }

    설명 contents 필드에서 주어진 keyword를 포함하는 데이터를 찾고, 그 결과를 'ModifiedAt' 기준 내림차순으로 정렬합니다.

    1. MemoService
    public List<MemoResponseDto> getMemosByKeyword(String keyword) {
        return memoRepository.findAllByContentsContainingOrderByModifiedAtDesc(keyword)
            .stream()
            .map(MemoResponseDto::new)
            .collect(Collectors.toList());
    }
    1. Controller
    @GetMapping("/memos/contents")
    public List<MemoResponseDto> getMemosByKeyword(@RequestParam String keyword) {
        return memoService.getMemosByKeyword(keyword);
    }

  • 문제 발생 및 해결
    • 문제상황 특정 이미지 (첫 번째 이미지 URL 참조)에 나타난 오류 발생.
    • 원인 @ModelAttribute 어노테이션 사용 문제.
    • 해결책 @RequestParam 어노테이션으로 교체하여 문제 해결. 결과는 두 번째 이미지 URL에서 확인 가능.


profile
backend_Devloper

0개의 댓글