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 : 검색 결과 주고받기
'강의정리들 > [2021] Spring Boot' 카테고리의 다른 글
[코스파] 스프링 기초 4주차-3 (0) | 2022.01.02 |
---|---|
[코스파] 스프링 기초 4주차-2 (0) | 2022.01.02 |
[코스파] 스프링 기초 3주차 (0) | 2022.01.01 |
[코스파] 스프링 기초 2주차-3 (0) | 2021.12.05 |
[코스파] 스프링 기초 2주차-2 (0) | 2021.12.05 |