<순서>
1. WishListDto 작성
2. WishListService 작성
3. WishListServiceTest 작성
*WishListDto
WishList 순수 entity를 건드리지 않고, dto를 만들어서 최대한 보호하도록 한다.
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WishListDto {
private int index;
private String title;
private String category;
private String address;
private String readAddress;
private String homePageLink;
private String imageLink;
private boolean isVisit;
private int visitCount;
private LocalDateTime lastVisiDate;
}
*WishListService.java
NaverClient에 등록했던 지역검색과 이미지검색을 활용하여 Spring MVC구조에 맞게 Service에 추가한다. 결과를 따로 보여주기 위해서 검색결과 갯수 검사와 1번에 WishListDto를 추가했다.
@Service
@RequiredArgsConstructor
public class WishListService {
private final NaverClient naverClient;
public WishListDto search(String query) {
//지역 검색
var searchLocalReq = new SearchLocalReq();
searchLocalReq.setQuery(query);
//검색 결과
var SearchLocalRes searchLocalRes = naverClient.serachLocal(searchLocalReq);
//
if(searchLocalRes.getTotal > 0) {
var localItem = searchLocalRes.getItems().stream().findFirst().get();
var itemQuery = localItem.getTitle.replaceAll("<[^>]*>", ""); //괄호 제거
//이미지 검색
var serachImageReq = new SearhImageReq();
searchImageReq.setQuery(imageQuery);
//이미지 검색 결과
var searchImageRes = naverClient.searchImage(searchImageReq);
if(searchImageRes.getTotal > 0) {
var imageItem = searchImageRes.getItems().stream().findFirst().get();
var result = new WishListDto();
result.setTitle(localItem.getTitle());
result.setCategory(searchImageRes.getCategory());
result.setAddress(localItem.getAddress());
result.setHomePageLink(localItem.getLink());
result.setImageLink(localItem.getLink());
return result;
}
}
return new WishListDto();
}
*WishListServiceTest.java
정상적으로 검색이 되는지 확인한다. 메서드가 잘못 짜여졌다면, naver api에서 오류를 반환한다. 또한 메서드 로직은 잘 짰지만, 혹여나 갈비집 키워드에 해당하는 결과가 없을수도 있으므로 키워드에 유의한다.
@SpringBootTest
public class WishListServiceTest {
@Autowired
private WishListService wishListService;
@Test
public void searchTest() {
var result = wishListService.search("갈비집");
Asserts.assertNotNull(result);
}
}
반응형
'Spring' 카테고리의 다른 글
Spring framework 로그(log) 알아보기 (1) | 2021.12.16 |
---|---|
네이버 지역검색 API를 활용한 맛집 List 제작 - (4) (0) | 2021.08.29 |
네이버 지역검색 API를 활용한 맛집 List 제작 - (2) (0) | 2021.08.22 |
네이버 지역검색 API를 활용한 맛집 List 제작 - (1) (0) | 2021.08.22 |
Swagger (0) | 2021.08.21 |