본문 바로가기
NCloud(NCP)

[Naver Cloud Platform] Ncloud API Service Pack Series - 0 Begining(with. nShortURL)

by 간식주인 2023. 8. 28.

Naver Cloud Platform에서 제공하는 다양한 API 상품군들 써 보신적 있나요?

좋다는 얘기는 많이 들어보았지만
개발을 몰라서, 코드를 몰라서, 샘플 코드가 없어서 사용해보지 못하셨다구요?

 

이젠 더이상 걱정하지 마세요

 

Snack Master와 함께 각 서비스가 무엇인지 알아보며 샘플코드로 직접 실습까지 해보면 더이상 API 상품군들을 두려워하지 않게 되실겁니다!!


 

 

다양한 상품군들을 사용하기에 앞서 API가 무엇인지 먼저 살펴보도록 합시다.

API와 Restful API란 ?

Interface란 컴퓨터와 사용자 사이의 상호작용을 위한 수단으로 사용자가 컴퓨터를 조작할 수 있도록 돕는 시스템입니다.

위의 이미지 처럼 사용자(클라이언트)는 다양한 수단을 통해 컴퓨터를 조작할 수 있으며, 이를 사용자 인터페이스(User Interface)라고도 합니다.

 

API(Application Programming Interface)란 응용 프로그램들이 소통하기 위한 수단으로 다른 회사 혹은 개인이 만든 프로그램에서 제공하는 기능을 사용할 수 있습니다.

예를 들어 기상청에서 제공하는 풍속, 기압, 기온등의 데이터를 받아와서 날씨를 알려주는 애플리케이션을 개발할수도 있습니다.

 

API는 여러 동작방식을 가지고 있지만, 그중에서도 가장 대중적으로 사용되고 있는 RESTful API를 살펴보겠습니다.

먼저 REST란? Representational State Transfer의 줄임말로 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍쳐의 한 형식으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법입니다.

좀 더 쉽게 설명하자면 웹 기반 애플리케이션의 설계 원칙 중 하나로, 정보를 효율적으로 전달하고 조작하는 방법을 제공합니다. REST는 웹 서비스나 API를 만들 때 많이 사용되며 다른 시스템 간에 데이터를 주고받는 데에 유용합니다.

 

REST가 무엇인지 알았으니, 구성요소에 대해서 살펴보도록 하겠습니다.

1. 자원 (Resources): REST는 웹 서비스를 자원의 집합으로 바라봅니다. 이 자원들은 고유한 식별자를 가집니다.

예를 들어 사용자, 제품, 주문과 같은 것들이 자원이 될 수 있습니다.

2. HTTP 메서드 (HTTP Methods): REST는 HTTP 메서드를 이용하여 자원을 조작합니다. 가장 널리 사용되는 메서드로는 다음과 같습니다.

  • GET: 자원을 읽어올 때 사용합니다.
  • POST: 새로운 자원을 생성할 때 사용합니다.
  • PUT: 기존 자원을 업데이트할 때 사용합니다.
  • DELETE: 자원을 삭제할 때 사용합니다.

3. 상태 없음 (Stateless): 서버는 클라이언트의 상태를 저장하지 않습니다. 각각의 요청은 모든 필요한 정보를 포함하고 있어야 하며, 서버는 해당 요청을 처리하고 응답합니다. 이렇게 함으로써 서버는 더 많은 클라이언트를 처리하고 확장할 수 있습니다.

4. 표현 (Representation): 자원은 여러 형태로 표현될 수 있습니다. 예를 들어 JSON, XML 등의 형식으로 표현될 수 있으며 클라이언트는 이러한 표현을 이용하여 자원과 상호 작용합니다.

5. URI (Uniform Resource Identifier): 각 자원은 고유한 식별자인 URI를 가지며, 이를 통해 자원에 접근합니다.

 

앞으로 Naver Cloud Platform에서 제공하는 API관련 서비스를 사용하기 위해 RESTful API(REST의 형식을 따르는 API)를 사용하도록 하겠습니다.

 

AI, Naver API 서비스 사용을 위한 Application 등록

네이버 클라우드 플랫폼 콘솔에 로그인한 후 Services > AI, Naver API 를 클릭하여 "Application 등록"을 진행합니다.



사용하려는 서비스를 선택하고 "등록"을 클릭합니다.(아래 작성한 카테고리를 참고하여도 좋습니다.)

아래와 같이 새로운 애플리케이션이 등록된 것을 확인할 수 있습니다.

이후 서비스 사용을 위해 해당 애플리케이션의 인증 정보를 클릭하여 Client ID, Client Secret을 기록합니다.

Naver Cloud Platform API 사용예제(Naver nShortURL)

서비스까지 생성하였다면, 이제 실제 python 코드를 통해 Naver Cloud Platform에서 제공하는 API 관련 서비스를 사용해보도록 하겠습니다.(이번에는 Naaver nShortURL을 사용해보도록 하겠습니다.)

 

Visual Studio Code와 같은 텍스트 에디터를 통해 코드를 작성할 디렉터리를 지정하고, 파일을 생성합니다.

API_Gateway_info.py

# API Gateway Info #
# NCP AI.NAVER API 

def get_client_id():
    # Client ID : (X-NCP-APIGW-API-KEY-ID)
    client_id = "적어놓은 client ID"
    return client_id

def get_client_secret():
    # Client Secret (X-NCP-APIGW-API-KEY)
    client_secret = "적어놓은 client Secret"
    return client_secret

 

*API Gateway 파일을 별도로 만드는 이유?

  - 생성한 AI,Naver API 애플리케이션을 통해 사용하는 서비스들을 같은 Client ID와 Client Secret을 사용하게 될 예정입니다. 따라서 매번 코드를  작성할 때마다 해당 값을 적는 것 대신, 한 번만 작성한후 해당 값을 호출하여 사용하는 방식으로 사용하는 것이 편하기 때문에 이처럼 사용합니다.

 

Naver nShourt URL.py

- nShortURL 서비스는 긴 URL을 짧은 형태로 줄여주어 글자 수에 제한이 있는 SMS를 전송하거나 SNS를 이용할 때 부담을 줄일 수 있습니다.

- 하루에 25000건까지 사용가능하며 무료 서비스입니다.

- API version v1, API Gateway 필요

- GET / POST

import urllib.request
import API_Gateway_info

def nShortURL(host):
    # method = "POST"
    encText = urllib.parse.quote(host)
    data = "url=" + encText
    url = "https://naveropenapi.apigw.ntruss.com/util/v1/shorturl"
    request = urllib.request.Request(url)
    client_id = API_Gateway_info.get_client_id()
    client_secret = API_Gateway_info.get_client_secret()

    request.add_header("X-NCP-APIGW-API-KEY-ID",client_id)
    request.add_header("X-NCP-APIGW-API-KEY",client_secret)
    response = urllib.request.urlopen(request, data=data.encode("utf-8"))
    rescode = response.getcode()
    if(rescode==200):
        response_body = response.read()
        print(response_body.decode('utf-8'))
    else:
        print("Error Code:" + rescode)

# 길이를 축소시킬 URL명 입력
host = "https://www.ncloud.com/product/applicationService/nShortUrl"
print(nShortURL(host))

Optional) 코드 풀이

더보기

import urllib.request # 코드 작성 및 실행에 필요한 urllib.request 라이브러리, urllib 모듈을 이용하여 HTTP 요청을 보냄
import API_Gateway_info # Client ID, Client Secret 호출을 위한 API_Gateway_info 파일 임포트

 


def nShortURL(host):
    # method = "POST"
    encText = urllib.parse.quote(host) # encText에는 urllib.parse.quote() 함수를 사용하여 host URL을 인코딩한 값을 저장합니다.
    data = "url=" + encText # data에는 "url=" + encText 형식으로 데이터를 준비합니다.
    url = "https://naveropenapi.apigw.ntruss.com/util/v1/shorturl" # Naver nShortURL API 호출을 위한 URL
    request = urllib.request.Request(url) # urllib.request.Request() 함수를 사용하여 API 요청 객체를 생성합니다.
    client_id = API_Gateway_info.get_client_id() # API_Gateway_info.py 파일의 get_client_id()에서 Client ID 값 호출
    client_secret = API_Gateway_info.get_client_secret() # API_Gateway_info.py 파일의 get_client_Secret() Client Secret 값 호출

    request.add_header("X-NCP-APIGW-API-KEY-ID",client_id) # 클라이언트 아이디를 요청 헤더에 추가합니다.
    request.add_header("X-NCP-APIGW-API-KEY",client_secret) # 클라이언트 시크릿을  요청 헤더에 추가합니다.
    response = urllib.request.urlopen(request, data=data.encode("utf-8")) # urllib.request.urlopen() 함수를 사용하여 API 요청을 보내고, 그에 따른 응답을 얻습니다.

 

    rescode = response.getcode()
    if(rescode==200):
        response_body = response.read()
        print(response_body.decode('utf-8'))
    else:
        print("Error Code:" + rescode)

#응답 코드가 200인 경우, 즉 성공한 경우, 응답 본문을 읽어와서 출력합니다.
#응답 코드가 200이 아닌 경우, 에러 코드와 함께 에러 메시지를 출력합니다.

 


# 길이를 축소시킬 URL명 입력
host = "https://www.ncloud.com/product/applicationService/nShortUrl" # 길이를 축소시킬 URL 명 입력
print(nShortURL(host)) # def nShortURL(host)의 실행 결과를 출력 

 

실행결과에서 url 부분을 통해 도메인 이름이 축소된 것을 확인할 수 있습니다.

https://www.ncloud.com/product/applicationService/nShortUrl ->  https://me2.do/FYuIQhLP

 

 

Naver Cloud Platform에서 제공하는 API 관련 서비스 카테고리 분류

네이버 클라우드에서 제공하는 여러 API 관련 서비스는 아래와 같은 카테고리로 분류 할 수 있습니다.

 

[AI,Naver API - Clova Series]

  • CLOVA Face Recognition, CLOVA Speech Recognition

2023.08.28 - [NCloud(NCP)] - [Naver Cloud Platform] Ncloud API Service Pack Series - 1 CLOVA Recognition(Face, Speech)

 

[Naver Cloud Platform] Ncloud API Service Pack Series - 1 CLOVA Recognition(Face, Speech)

이번에는 Naver Cloud Platform API 관련 서비스 중 CLOVA Recognition 서비스를 다뤄보도록 하겠습니다. 🐻 목차 CLOVA Face Recognition 서비스 CLOVA Face Recognition API 사용예제 CLOVA Face Recognition 실행결과 CLOVA Speech

enginnersnack.tistory.com

  • CLOVA Sentiment

2023.09.19 - [NCloud(NCP)] - [Naver Cloud Platform] Ncloud API Service Pack Series - 2 CLOVA Sentiment

 

[Naver Cloud Platform] Ncloud API Service Pack Series - 2 CLOVA Sentiment

오늘은 Naver Cloud Platform API 관련 서비스 중 CLOVA Sentiment에 대해 알아보도록 하겠습니다. 🐥 목차 CLOVA Sentiment 서비스 CLOVA Sentiment API 사용예제 CLOVA Sentiment 실행결과 1. CLOVA Sentiment 서비스 CLOVA Sentim

enginnersnack.tistory.com

  • CLOVA Summary

[AI,Naver API - Maps Series]

  • Maps - Directions 5(driving)
  • Maps - Directions 15(driving)
  • Maps - Geocoding(geocode)
  • Maps - Reverse Geocoding(gc)
  • Maps - Static Map(raster)

[AI,Naver API - Naver Series]

  • Naver Captcha Audio
  • Naver Captcha Image
  • Naver Korean Naver Romanizer
  • Naver Search Trend
  • Naver nShortURL

[AI,Naver API - ML Series]

  • ML - Ncloud Pose Estimation
  • ML - Object Detection

[AI,Naver API - Papago Series]

  • Papago Image Translation(Image)
  • Papago Image Translation(Text)

*이후 작성된 Naver Cloud Platform API 관련 게시글을 여기에 링크로 추가할 예정입니다 :)

 

[여담]

이번 글에서는 API에 대한 설명과 간단한 코드를 통해 Naver Cloud Platform의 nShortURL 서비스를 사용해보았습니다.

이후 지속적으로 Naver Cloud Platform의 다양한 API 관련 서비스를 다루어볼 예정이니 많은 관심 부탁드립니다.

( •̀ ᴗ •́ )و