skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

외부 API를 사용해보자 #34

Open skarltjr opened 3 years ago

skarltjr commented 3 years ago

비트코인 거래소 빗썸에서 코인의 가격정보를 가져와보자

1. 빗썸의 api 확인하기

2. 데이터를 받아오기 위한 dto 구성

화면 캡처 2021-10-07 211608 화면 캡처 2021-10-07 211725

3. RestTemplate 빈으로 등록하기

화면 캡처 2021-10-07 211818

4. 이제 원하는 코인의 가격 정보를 끌어와보자


- `Service`에서 해당하는 코인 가격을 통화로 가져오자

@Service @Transactional @RequiredArgsConstructor public class BitService {

private final RestTemplate restTemplate;

private String bithumbURI = "https://api.bithumb.com/public/ticker/";

public OrderDto getCurrent(String bitKinds,String current) {
    String kinds = bitKinds;
    String selectedCurrent = current;

    String targetUri = bithumbURI + kinds + "_" + current;
    //UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(targetUri); 필요할 때 사용할 수 있으니 보류

    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
    httpHeaders.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);

    HttpEntity<?> httpEntity = new HttpEntity<>(httpHeaders);
    return restTemplate.exchange(targetUri, HttpMethod.GET, httpEntity, OrderDto.class).getBody();
}

public Data computeTerm(OrderDto result) {
    return result.getData();
}

}



### 6. 정리
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html 참고
- https://jojoldu.tistory.com/341 참고
- ![화면 캡처 2021-10-07 213417](https://user-images.githubusercontent.com/62214428/136384891-1b505c76-cf39-4088-ba38-bb7e4a96f8e2.png)

- `restTemplate.exchange(targetUri, HttpMethod.GET, httpEntity, OrderDto.class).getBody();`
   - `targetUri` = https://api.bithumb.com/public/ticker/{order_currency}_{payment_currency}에서 전달받은 코인, 화폐 정보를 할당한 uri -> 해당 uri로
   - `HttpMethod.GET` = get방식으로
   - `httpEntity` = 만들어둔 request entity를 전달하여
   - `OrderDto.class` = OrderDto.class로 응답받겠다

![화면 캡처 2021-10-07 213631](https://user-images.githubusercontent.com/62214428/136385261-b75a4f04-b399-48e7-875e-98ddb50fbe62.png)
skarltjr commented 3 years ago

https://github.com/skarltjr/OpenSourceClass

skarltjr commented 3 years ago

문제1.

dockerfile & docker-compose.yml을 작성한 후 docker-compose up을 수행해봤다. 그런데 계속 path에 해당 파일이 없다고 에러가 났다.

문제2. jar파일을 미리 만들어두지 않은 방향은 시간이 매우 많이 소요되었다. 그래서 jar파일을 만들어 두고 dockerfile을 작성하는 쪽으로 진행했다.

FROM openjdk:11-jre-slim as builder
ARG JAR_FILE=src/main/docker/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
skarltjr commented 2 years ago

내가 이걸 왜 기록하는가?