API & JSON 정리

Jingi·2024년 1월 19일

Web

목록 보기
1/40
post-thumbnail

API

  • 프로그램과 프로그램을 연결시켜주는 매개체
  • 서로 다른 프로그램끼리 통신을 하는 경우 보통 API를 이용하여 통신
  • 규칙들의 집합(아래의 상황에서 중재자 역할)
  • 클라이언트가 원하는 기능을 수행하기 위해서 서버 측에 만들어 놓은 프로그램
    • 기능 예시 : 데이터 저장, 조회, 수정, 삭제 등등
  • 서버 측에 특정 주소로 요청이 오면 정해진 기능을 수행하는 API를 미리 만들어 둔다
    • 클라이언트 서버가 미리 만들어 놓은 주소로 요청을 보낸다
  • API 사용

    1. 접근할 프로그램의 규칙이 잘 짜이지 않고 복잡한 경우
    2. 프로그램 보안 상 외부에서 누구나 사용할 수 없고 제한된 기능들을 간접적으로 제공하고 싶을 때

  • Server

    • 부탁을 받으면 처리해주거나, 부탁대로 원하는 값을 돌려주는 역할을 말한다.
  • Client

    • 부탁하는 역할

! pip install requests
import pprint
import requests
api_key = ''
# 서울의 위도
lat = 37.56
# 서울의 경도
lon = 126.97

url = f'https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={api_key}'
data = requests.get(url).json()
# 그냥 출력하기
print(data)

# 예쁘게 출력하기
pprint.pprint(data)

# 날씨 요약 정보 : 서울 기준 'clear sky' 가 출력 되도록 
pprint.pprint(data['weather'][0]['description'])
pprint.pprint(data.get('weather')[0].get('description'))
  # 코드 소개
  url
  - 요청을 보내는 서버의 주소 
  requests.get(url)
  - 해당 서버(url)에 데이터를 달라고 요청을 보내는 함수
  .json()
  - 내부의 데이터를 JSON(파이썬의 딕셔너리와 비슷함) 형태로 변환해주는 함수

Open API

  • 외부에서 사용할 수 있도록 무료로 개방 된 API

  • 주의 사항

    악성 사용자가 100만 개의 계정을 생성해 API 요청을 보내는 상황일 때 --> 너무 많은 계정에서 동시에 요청시 서버 부하
    
    문제 극복 : API KEY를 통해 사용자 확인  
      - 사용량을 제한되어 있다.

JSON

1. JSON 이란?

  • javascript 객체 표기법
  • JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용합니다.
  • 경량의 텍스트 기반의 데이터 형식
  • JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐입니다.
  • python Dictionary와 유사
  • ※ 파싱(Parsing) : 데이터를 의미잇는 구조로 분석하고 해석하는 과정

2. JSON 특징

  1. 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용한다.
  2. 자바스크립트 객체 표기법을 따른다.
  3. 자바스크립트를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환할 수 있는 이점이 있다.
  4. 사람과 기계가 모두 읽기 편하도록 고안되었다.
  5. 특정 프로그래밍 언어와 운영체제에 독립적이다 .
  6. 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 사용 할 수 있는 라이브러리를 제공한다.
  7. 자바스크립트의 문법과 굉장히 유사하지만 텍스트 형식일 뿐이다.

3. JSON의 문제점

AJAX 는 단순히 데이터만이 아니라 JavaScript 그 자체도 전달할 수 있어 데이터인 줄 알고 받았지만 악성 스크립트가 될 수 있다. 이를 방지하기 위해 JSON 관련 라이브러리를 따로 사용한다.



[참고]https://velog.io/@zeler1004/%EA%B0%84%EB%8B%A8%ED%95%9C-API-Sever-%EB%A7%8C%EB%93%9C%EB%8A%94-%EA%B8%B0%EB%B3%B8%EC%A0%81-%ED%9D%90%EB%A6%84-nhgogt3g

profile
데이터 분석에서 백엔드까지...

0개의 댓글