python/기초

[API] API가 뭐죠?

끼발자 2022. 9. 29. 11:37
반응형

API?

웹 개발을 하다보면 참 많이 듣게되는 단어 API.

혼자 flask니 django니 개발할 때는 나 혼자서 기능 만들고 불러다쓰면 다른건 신경 안 써도 됐는데,

어찌 현업으로 나와보니 API 스펙좀 달란다.

처음 저 말을 들었을 때, 참 많이 당황했다.

API ( Application Programming  Interface ).

AWS에서는 아래와 같이 정의한다.

더보기

API는 무엇을 의미하나요?

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다. API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냅니다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다. API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.

-https://aws.amazon.com/ko/what-is/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 등을 명시해주면 된다.

 

반응형