ENCORE CLOUD ARCHITECTURE TIL 2/18

신민창·2021년 2월 18일
0

TIL

목록 보기
12/46

REST API

REST : Representational State Transfer의 약자로써 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미
즉 자원의 표현에 의한 상태 전달
a)자원의 표현
- 자원 : 해당 소프트웨어가 관리하는 모든 것
- ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등
b) 상태(정보)전달
- 데이터가 요청되어지는 시점에서 자원의 상태를 전달한다.
- json 혹은 xml을 통해 데이터를 주고 받는 것이 일반적이다.

월드 와이드웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
- REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
- REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.

REST의 구체적인 개념 : HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD operation을 적용하는 것을 의미한다.
- 즉, REST는 자원 기반의 구조 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍처를 의미한다.
- 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여 한다.

네이버 포털 API 이용하기

https://developers.naver.com/docs/search/news
해당 사이트 접속 후 오픈 API 이용 신청

이 후 Client ID, Client Secret 값을 이용한다.

네이버 뉴스를 활용한 검색페이지 크롤링 프로그램 작성

파이썬 프로그램을 작성한다.

config.py

client_id = "본인 클라이언트 아이디"
client_secret = "시크릿 키"

naverCrawler.py

import urllib.request
import config

def makeURL(sNode, search_text):
    base = "https://openapi.naver.com/v1/search"
    node = "/%s.json" % sNode
    parameters = "?query=%s" % urllib.parse.quote(search_text)
    url = base + node + parameters
    print(url)
    return url

def requestURL(url):
    req = urllib.request.Request(url)
    req.add_header("X-Naver-Client-Id", config.client_id)
    req.add_header("X-Naver-Client-Secret", config.client_secret)
    try:
        response = urllib.request.urlopen(req)
        if response.status == 200:
            print("URL Request Success")
            data = response.read().decode('utf-8')
            return data
    except Exception as e:
        print(e)
        print("Error for URL : %s" %url)
        return None

def main():
    sNode = 'news' #blog, book 등 검색 엔진 변경 가능
    search_text = '챔스' # 원하는 검색 키워드 입력

    targetURL = makeURL(sNode, search_text)
    result = requestURL(targetURL)
    print(result)

main()

실행 할 경우

이렇게 관련된 내용이 터미널에 표시된다.

0개의 댓글