강의정리들/[2021] Spring Boot

[코스파] 스프링 기초 4주차-1

keartt 2022. 1. 2. 04:11
반응형

4주차 내용

프로젝트 들어가기 앞서

스프링 스케쥴러 : 서버에게 원하는 작업을 원하는 시간에 시키는 것

백엔드 스프링 개발자에게 가장 필요한 기본기는?

1.     3계층 숙달 : 개발의 핵심은 분업과 느슨한 결합(유연성과 확장성)

       Controller, Service, Repository > 느슨한 결합의 대표 예시이자 스프링이 돌아가는 척추

2.     API handling

       다양한 API를 잘 다루면 빠르게 많이 만들 수 있고 성장할 수 있다.

       느슨한결합의 대표적 예시, 정해진 약속대로 요구해서 정해진 결과를 받을 수 있다.

       JSON 으로 주고받는 데이터를 어떻게 자바로 요청하고 다루는지 익히자!

       모든 코드를 이해하기 보다, 요점을 정확히 파악하고 데이터를 주고받을 수 있게

다시한번 3계층 정리

  • Controller 는 제일 바깥 쪽에서 요청을 받고, 응답을 되돌려주는 역할을 합니다.
  • Service 는 중간에서 구체적인 작업 순서를 결정, 업데이트
  • Repository DB와 직접 소통함으로써 자료를 생성하고, 조회하고, 변경하고, 삭제합니다.
  • 그리고 각 레이어 간에는 Entity를 직접 사용하지 않고, Dto 라는 택배상자를 만들어 사용

네이버 쇼핑 API 이용하기

<https://developers.naver.com/docs/search/shopping/>

프로젝트 만들기 설정 복습

  • java version8 / gradle / week04 / com.sparta
  • H2 Database / Lombok / Spring Web / MySQL Driver / Spring Data JPA
  • Crtl + Alt + S

         Auto import

         Insert imports on paste : Always 체크!

         Add umambiguous imports on the fly : 체크!

         Compiler > Annotation Processors > Enable annotation processing : 체크!

 

src > main > java > com.sparta.week04 에 utils 패키지 생성

해당 패키지 내부에 NaverShopSearch.java 생성

package com.sparta.week04.utils;

import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;

public class NaverShopSearch {
    public String search() {
        RestTemplate rest = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.add("X-Naver-Client-Id", "HhGR9UabgJRwK_UEfYEN"); // 아이디
        headers.add("X-Naver-Client-Secret", "0Zh_2e9QCT"); // 비밀번호
        String body = "";

        HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
        ResponseEntity<String> responseEntity = rest.exchange("https://openapi.naver.com/v1/search/shop.json?query=handcream", HttpMethod.GET, requestEntity, String.class);
        HttpStatus httpStatus = responseEntity.getStatusCode();
        int status = httpStatus.value();
        String response = responseEntity.getBody();
        System.out.println("Response status: " + status);
        System.out.println(response);

        return response;
    }

    public static void main(String[] args) {
        NaverShopSearch naverShopSearch = new NaverShopSearch();
        naverShopSearch.search();
    }
}

 

프로젝트 설계하기

  Method URL Return Type
키워드로 상품 검색하고 결과를 목록으로 보여주기 GET /api/search?query=검색어 List<ItemDto>
관심 상품 등록하기 POST /api/products Product
관심 상품 조회하기 GET /api/products List<Product>
관심상품에 원하는 가격 등록하고, 그보다 낮은 경우 표시 PUT /api/product/{id} id

 

3 계층 설계하기

1.     Controller : 요청 받는 것, 요청값은 관심상품과 검색 키워드

         A.     ProductRestController : 관심 상품

         B.      SearchRequestController : 검색 관련

2.     Service : 업데이트, 변경이 일어나는 건 관심 가격

         A.     ProductService : 관심 상품 가격 변경

3.     Repository : DB 에 저장되는 건 Product

         A.     Product : 관심 상품 테이블

         B.      ProductRepository : 관심 상품 조회, 저장

         C.      ProductRequestDto : 관심 상품 등록

         D.     ProductMypriceRequestDto : 관심 가격 변경

         E.      ItemDto : 검색 결과 주고받기

반응형