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

2022. 1. 2.·강의정리들/[2021] Spring Boot
반응형

 

ItemDto.java 생성

models 패키지 내부에: 가져온 정보를 클라이언트에 돌려주기 위한 것

@Getter
public class ItemDto {
    private String title;
    private String link;
    private String image;
    private int lprice;
    public ItemDto(JSONObject itemJson) {
        this.title = itemJson.getString("title");
        this.link = itemJson.getString("link");
        this.image = itemJson.getString("image");
        this.lprice = itemJson.getInt("lprice");
    }
}

 

컨트롤러에서 NaverShopSearch 메소드 호출해서 문자열 받고

다시 fromJSONtoItems 에 input 으로 결과를 받고 돌려주면 된다.

>  main 필요없으니까 삭제

> 최종 완성된 NaverShopSearch.java

public class NaverShopSearch {
    public String search(String query) {
        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=" +query, 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 List<ItemDto> fromJSONtoItems(String result){    // 매번 실행되기에 메소드로 만든다.
        JSONObject rjson = new JSONObject(result); // result 는 JSONObject 로  만드는 문자열
        JSONArray items = rjson.getJSONArray("items"); // rjson 에서 JSONArray 배열을 꺼내겠다.
        List<ItemDto> itemDtoList = new ArrayList<>();  // 여러개의 검색결과가 나오게 하기 위해 List 배열 생성
        // itemDtoList 내에 itemDto 를 전부 넣어주고 Controller 에서 반환
        for (int i=0; i<items.length(); i++) {          // JSONArray 로 for 문 돌기
            JSONObject itemJson =  items.getJSONObject(i);
            ItemDto itemDto = new ItemDto(itemJson); // 만들어 논 itemDto 이용
            itemDtoList.add(itemDto);
        }
        return  itemDtoList;
    }
}

 

네이버 API와 서비스 연결하기

1.     사용자가 검색어를 입력하면, 컨트롤러가 전달받고

2.     전달받은 검색어로 네이버 API 에 요청하고 사용자에게 응답하는 과정

GET 방식 /api/search?query=검색어

Ø  main 메소드가 아닌 Controller 에서 검색을 한다.

Ø  NaverShopSearch 컴포넌트 등록하기 :

스프링이 자동으로 필요한 클래스를 필요한 곳에 생성하려면, 사용자가 요구할 때 자동으로 생성할 클래스 목록을 확인할 수 있어야 함. 그 목록에 등록하는 방법이 컴포넌트등록

@Component 추가

컴포넌트 : https://mommoo.tistory.com/55

함수 객체 컴퓨넌트 등 용어 정리  : 차이점 바로 말씀드립니다~ 함수 클래스 객체 인스턴스 모듈 컴포넌트 API OpenAPI CBD - YouTube

Ø  controller 패키지 내에 SearchRequestController. java 만들기 : 검색 관련

@RequiredArgsConstructor // final 로 선언된 클래스를 자동으로 생성합니다.
@RestController // JSON으로 응답함을 선언합니다.
public class SearchRequestController {
    private final NaverShopSearch naverShopSearch;
    @GetMapping("/api/search")
    public List<ItemDto> getItems(@RequestParam String query) { // @RequestParam : (? 뒤에 있는)파라미터들의 요청
        String result = naverShopSearch.search(query);
        return naverShopSearch.fromJSONtoItems(result);
    }
}

 

HTML 파일 분리하여 만들기

src > main > resources > static 내부에 index.html  baisc.js  style.css 파일 생성

반응형

'강의정리들 > [2021] Spring Boot' 카테고리의 다른 글

스프링 웹 프로젝트 배포하는 방법  (0) 2022.11.06
[코스파] 스프링 기초 4주차-4  (0) 2022.01.11
[코스파] 스프링 기초 4주차-2  (0) 2022.01.02
[코스파] 스프링 기초 4주차-1  (0) 2022.01.02
[코스파] 스프링 기초 3주차  (0) 2022.01.01
'강의정리들/[2021] Spring Boot' 카테고리의 다른 글
  • 스프링 웹 프로젝트 배포하는 방법
  • [코스파] 스프링 기초 4주차-4
  • [코스파] 스프링 기초 4주차-2
  • [코스파] 스프링 기초 4주차-1
keartt
keartt
shalpha_2@naver.com
주니어 탈출일기 🐽
shalpha_2@naver.com
  • keartt
전체
오늘
어제
  • 전체보기
    • CS & 알고리즘
      • CS (컴과학)
      • 알고리즘
      • 백준
    • Spring
      • SpringBoot (JPA)
      • Spring (Legacy)
    • Server
      • Linux
      • Docker
    • Java
      • Design Pattern
    • PostgreSQL
    • GIS (공간정보)
    • 오류정리
    • Git
    • JavaScript
      • Node.js
      • React
    • Tool
      • IntelliJ
      • MacOS
      • VSCode
      • Eclipse
      • Other
    • 강의정리들
      • [2023] FullStack
      • [2022] Spring Boot
      • [2021] Spring Boot

인기 글

태그

브루트포스
구간합
코딩애플
이분탐색
반응형
hELLO· Designed By정상우.v4.6.1
keartt
[코스파] 스프링 기초 4주차-3

개인정보

kearttshalpha_2@naver.com계정관리

운영중인 블로그

주니어 탈출일기쓰기블로그 관리

이동링크목록

  • 티스토리 홈
  • 피드
  • 로그아웃
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.