API?
웹 개발을 하다보면 참 많이 듣게되는 단어 API.
혼자 flask니 django니 개발할 때는 나 혼자서 기능 만들고 불러다쓰면 다른건 신경 안 써도 됐는데,
어찌 현업으로 나와보니 API 스펙좀 달란다.
처음 저 말을 들었을 때, 참 많이 당황했다.
API ( Application Programming Interface ).
AWS에서는 아래와 같이 정의한다.
API는 무엇을 의미하나요?
API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다. API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.
이론을 완벽하게 숙지하고 있으면 참 좋겠지만, 어려운 단어로 장황하게 써 있으니 거부감부터 든다.
간단하게 API는 내가 만든 웹 사이트의 주소!
주소는 주소인데? html처럼 우리가 직접 보는 페이지가 아닌,
정보를 요청 ( Request ) 한 다음, 응답 ( Response ) 받을 수 있는 주소라고 볼 수 있다.
쉽게말해서 상점에서 물건을 사는 행위와 유사하다.
이제 요청하는 방식이 GET 인지, POST 인지의 차이일 뿐 큰 틀에서보면 같다.
물론, API 자체도 웹 프레임워크에서 만들어진 함수 혹은 클래스이므로 요청 -> 응답 사이에 여러 작업을 할 수 있다.
flask로 만들어진 주소가 아래와 같다고 하면,
from flask import Flask
app = Flask(__name__)
app.route('/get',methods =['GET'])
def main():
return 'Hi'
<localhost>/get 이라는 주소( = API ) 가 생성되고, 이 주소로 접속하면 Hi 라는 응답( Response )을 한다.
만약 parameter가 늘어나서,
from flask import Flask, request
app.route('/get',methods=['GET'])
def main():
parameters = request.args.to_dict() # 전달받은 parameter들을 dict 형태로 저장
res = ''
for key,value in parameters.items():
res += f'Key : {key}, Value : {value}\n'
if res == '':
return 0
return res
이런식으로 만든다면 ( 물론 API로 주고받기위해선 string, integer같은 변수보단 json형태로 주고받는것이 편하다 )
get을 통해 요청 ( key, value ) 하면 main이라는 함수를 통과하면서 코드를 실행시키고, Key: Value: 라는 문자열을 응답 ( Response ) 한다.
함수 내부에 DB를 조회해서 통계값을 반환한다던지, AI 모델을 만들었다면 해당 모델을 통과시켜 예측/분류를 실행시킬 수도 있다.
가끔 API 설계서를 요구할때도 있는데,
이 상황에서는 주소와 methods( get인지 post인지, 그 외 다른 것인지), 요청 parameter의 key와 type,
응답하는 key와 type 등을 명시해주면 된다.
'python > 기초' 카테고리의 다른 글
[파이썬 기초] Class를 알아보자.[2] (0) | 2022.05.30 |
---|---|
[파이썬 기초] Class를 알아보자. [1] (0) | 2022.05.27 |
[파이썬] pandas 시간 구간을 그룹화해보자. (0) | 2022.01.19 |
[파이썬 기초] 반복문을 뜯어보자. ( feat.왜 i? ) (0) | 2022.01.05 |
[파이썬 기초] 로또 숫자를 만들어보자. (0) | 2021.11.25 |