API란...

SaGo_MunGcci·2022년 8월 18일
0

노마드 코더

목록 보기
1/1

Definition Access

  • api에 대해서 뭔가 알듯 말듯 하다가 nomad coder님이 강의 영상을 듣고 이해함.
  • 앞으로 nomad coder님의 강의 영상을 정리한 벨로그를 올려야 겠다고 생각함.

API란 무엇인가요?

  • API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다.

  • 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있다. 휴대폰의 날씨 앱은 API를 통해 이 시스템과 "대화"하고 휴대폰에 매일 최신 날씨 정보를 표시한다.

API는 무엇을 의미하나요?

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말이다.

  • API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타낸다.

  • 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있다.

참고 : https://aws.amazon.com/ko/what-is/api/



Mechanism

  • api의 용어가 점점 햇갈릴때 쯤 nomad coder님의 영상을 보게됨.

API(Application Programming Interface)란...

  • 우리는 컴퓨터와 통신을 할때 내 자신이 클라이언트고 컴퓨터가 서버라고 친다면 키보드가 인터페이스이다.

  • 그런데 우리가 컴퓨터에 텍스트를 입력을 할때 텍스트에 해당하는 자판버튼을 손가락으로 누를뿐 그 이후 컴퓨터에서 어떻게 전자신호를 분석해서 모니터에 텍스트를 띄우는 지는 알지 않아도 된다.

  • 즉 api도 이와 같다. 서버개발 할 때도 우리 서버는 있지만 전문적인 데이터를 관리하는 서버에서 데이터를 요청할 때 해당서버에 요청만 하면 되지 요청을 한 이후에 어떤 매커니즘이 발생하여 데이터를 우리 서버에 보내주는 지 알 필요가 없는 것이다.

  • 나의 서버와 다른 운영체제 이거나 다른 프레임워크 혹은 다른 포멧이 설정되어있는 서버에 원하는 요청 할 때 키보드와 같은 역할을 하는 것이 api인 것이다.

  • 따라서 해당 api는 응답을 해주는 서버를 사용하기 위해서 응답 서버에서 만든 키보드와 같은 것이다.

  • 예를 들어서 만약 내가 네이버에서 검색한 상품의 데이터를 받아서 처리 해야 할때 내가 하드 코드로 네이버 검색 상품을 가져오는 것보다(사실 불가능하지만) api를 사용해서 네이버 쇼핑 서버에서 검색해서 출력된 데이터를 가져오면 되는 것이다.

  • 즉 네이버 쇼핑 api를 사용함으로써 네이버 쇼핑 서버에 해당 상품명을 입력하고 출력한 결과값을 얻어 오는 것이다.

  • (api를 사용할때 제공하는 기업 혹은 정부들의 api예시가 다 달랐구나.)

  • (api를 주로 제공하는 곳이 대량의 데이터를 가지고 있는 기업 혹은 정부인 이유가 이것이다.)

@Transactional
    public String movieSearch(String query) {

        log.info(query);

        RestTemplate rest = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.add("X-Naver-Client-Id", "R19VlCx5JhDdzA7fADa8");
        headers.add("X-Naver-Client-Secret", "Q0WeoiHdj0");
        String body = "";

        HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
        ResponseEntity<String> responseEntity =
                rest.exchange("https://openapi.naver.com/v1/search/movie.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;

    }
  • 실제 내가 사용한 네이버 영화 검색 api

네이버 영화 검색 api : https://developers.naver.com/docs/serviceapi/search/movie/movie.md



Retrospection

  • RestfulAPI와 일반적으로 통용되는 api의 용어가 서로 다른 것 같아서 헷갈렸는데, 실제로는 저렇게 간단한 기본원리인데 내가 기본 개념을 알지 못한상태에서 내 스스로 다르게 이해한것일 뿐이었다. 이것을 알고 다시 맨위에 AWS에서 제공해주는 api를 읽어보니까 마법같이 이해되었다. 너무 신기했다.

  • 즉 api에 대한 nomad coder님의 설명을 듣지 않았다면 계속 헷갈렸을 것이다.



profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글