상세 컨텐츠

본문 제목

ch4. rest API 개발(2) - service

패캠스프링/part3._스프링입문(part3)

by hippo0207 2022. 8. 16. 14:25

본문

  • 기존의 wishListEntity 그대로 쓰지않고, 복붙해서 wishListDto 를 만듦
    • (extends MemoryDbEntity 없애고 index요소추가 )
    • 분리이유 : db의 entity가 변경되어버리면 프론트엔드 변수명까지 영향미침 
    • 분리하면 중간변환과정만 있으면 되서 분리시킴
  • ApiController만든후 search넣음됨
@RestController
@RequestMapping("/api/restaurant")
@RequiredArgsConstructor
public class ApiController {

    private final WishListService wishListService;

    @GetMapping("/search")
    public WishListDto search(@RequestParam String query){
        return wishListService.search(query);
    }
}
  • springfox boot start 설치 후 http://localhost:8080/swagger-ui/ ㄱㄱ
implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0'

  • 위시리스트 추가, 방문추가, 삭제 기능 추가하면 됨

1. 위시리스트 추가

  • apiController >> add 추가(body로 wishListDto받음) ,  WishListService > add추가
  • dto 를 entity로 바꾸고나서 저장하는 기능 넣음 됨
   [WishListService.java]
   
   private final NaverClient naverClient;
   private final WishListRepository wishListRepository;
    
   public WishListDto add(WishListDto wishListDto) {
        //dto 를 entity로 바꾸고나서 저장하면 됨
        var entity = dtoToEntity(wishListDto);
        var saveEntity = wishListRepository.save(entity);
        return entityToDto(saveEntity);

    }

    private WishListEntity dtoToEntity(WishListDto wishListDto){
        var entity = new WishListEntity();
        entity.setIndex(wishListDto.getIndex());
        entity.setTitle(wishListDto.getTitle());
        entity.setCategory(wishListDto.getCategory());
        entity.setAddress(wishListDto.getAddress());
        entity.setRoadAddress(wishListDto.getRoadAddress());
        entity.setHomePageLink(wishListDto.getHomePageLink());
        entity.setImageLink(wishListDto.getImageLink());
        entity.setVisit(wishListDto.isVisit());
        entity.setVisitCount(wishListDto.getVisitCount());
        entity.setLastVisitDate(wishListDto.getLastVisitDate());
        return entity;
    }

    private WishListDto entityToDto(WishListEntity wishListEntity){

        var dto = new WishListDto();
        dto.setIndex(wishListEntity.getIndex());
        dto.setTitle(wishListEntity.getTitle());
        dto.setCategory(wishListEntity.getCategory());
        dto.setAddress(wishListEntity.getAddress());
        dto.setRoadAddress(wishListEntity.getRoadAddress());
        dto.setHomePageLink(wishListEntity.getHomePageLink());
        dto.setImageLink(wishListEntity.getImageLink());
        dto.setVisit(wishListEntity.isVisit());
        dto.setVisitCount(wishListEntity.getVisitCount());
        dto.setLastVisitDate(wishListEntity.getLastVisitDate());
        return dto;
    }
}

2. controller , service >. findAll추가

@GetMapping("/all")
    public List<WishListDto>findAll(){
        return wishListService.findAll();
    }
}
=====================
public List<WishListDto> findAll() {

        return wishListRepository.listAll()
                .stream()
                .map(it -> entityToDto(it))
                .collect(Collectors.toList());
    }

3. 방문추가

  public void addVisit(int index){
        var wishItem = wishListRepository.findById(index);
        if(wishItem.isPresent()){
            var item = wishItem.get();
            item.setVisit(true);
            item.setVisitCount(item.getVisitCount() + 1);
        }
    }
    =======================
        @PostMapping("/${index}")
    public void addVisit(@PathVariable int index){
        wishListService.addVisit(index);
    }

4.위시리스트 삭제 기능

 public void delete(int index) {
        wishListRepository.deleteById(index);
    }

========================
    @DeleteMapping("/{index}")
    public void delete(@PathVariable int index){
        wishListService.delete(index);
    }
}

관련글 더보기

댓글 영역