반응형
API
- Application Programming Interface의 약자
- 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘
- 애플리케이션 : 고유한 기능을 가진 모든 소프트웨어
- 인터페이스 : 두 애플리케이션 간의 서비스 계약이라고 할 수 있으며 해당 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다.
- API를 사용하면 다른 소프트웨어나 서비스를 호출하거나 그들로부터 데이터를 가져와 자신의 애플리케이션에 통합할 수 있다.
- => 기능을 확장하고 기존 기술을 재사용하며, 애플리케이션의 기능을 다양하게 확장하고 개선할 수 있다.
- API 아키텍처
- 클라이언트 : 요청을 보내는 애플리케이션
- 서버 : 응답을 보내는 애플리케이션
프레임워크
- 뼈대, 틀
- 소프트웨어의 형식을 제공, 사용 규칙이 정해져있다.
- 제공된 틀 안으로 들어가 주어진 규칙을 지켜가며 사용하는 것
- 라이브러리
- 정보의 저장소
- 부품이 되는 소프트웨어의 집합, 작은 기능들을 함수 단위로 만들어 제공
- 가져다 사용하는 개념, 쉽게 대체될 수 있다.
FastAPI
- API를 만들기 위한 파이썬 웹 프레임워크
- 내부적으로 Starlette이라는 비동기 프레임워크를 사용 => 속도가 빠르다.
- API 문서 자동 생성 (Swagger와 ReDoc 스타일 동일)
- 의존성 주입 위주의 설계를 통한 DB 등에 대한 관리 편리
- Pydantic을 사용한 Validation 체크
- 전통있는 프레임워크에 비해서 아직 지원되지 않는 부분이 존재
- 서버를 작은 단위로 기능별로 분할해서 만듬
- 장고처럼 자체 ORM(Object Relational Mapping)을 제공하지는 않지만 SQLAlchemy를 사용하여 ORM을 사용할 수 있다.
- 장고나 플라스크로 웹 서비스를 만들었다면 이에 대응하는 안드로이드나 아이폰 앱을 위한 API 개발을 따로 해야 하지만 FastAPI는 한번 만든 API를 여러 클라이언트에서 변경없이 사용할 수 있다.
- 특정 코드가 오래 걸리면 일단 제껴두고 다른 코드 실행 가능(ASGI 덕분에 비동기 처리 가능)
- Flask, FastAPI는 경량화에 특화되어 단 3~4줄의 코드만으로도 간단한 서비스를 제공하는 웹 페이지 서버를 바로 띄을 수 있다.
FastAPI 사용하기
pip3 install fastapi
pip3 install "uvicorn[standard]"
# main.py
from fastapi import FastAPI # FastAPI import
app = FastAPI()
from fastapi.responses import FileResponse
# 메인페이지 접속 시 hello 보내기
@app.get("/") # 인터넷의 주소 부분을 의미
def printHello():
return 'hello'
# ~ 접속 시 데이터 보내기
@app.get("/data")
def printJson():
return {"Number" : 12345}
# 메인페이지 접속 시 html 파일 전송
@app.get("/")
def printHello():
return FileResponse('index.html')
# 유저에게 데이터받기
class Model(BaseModel):
name : str
phone : int
@app.post("/send")
def naming(data : Model):
print(data) # 보낸 데이터 담김
return '전송완료'
uvicorn main:app --reload
: 페이지 열기- /docs 접속 시 API 문서를 자동으로 만들어준다.
Flask
- 비교적 가벼운 웹개발이라면 Flask, 조금 더 볼륨있는 프로젝트라면 Django를 사용했다.
"micro" 웹 프레임워크 Flask
- 최소한의 구성 요소와 요구 사항을 제공 => pip install로 필요한 extension들 추가로 설치해야함.(ex. MongoDB, security)
- 데이터베이스를 통합하거나 계정 인증 등을 포함하는 복잡한 앱 뿐만 아니라 단순한 정적 웹 사이트를 만드는 데도 유용하다.
Flask 사용하기
pip3 install flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__": # 현재 스크립트가 메인으로 실행되었을 때 app.run()을 실행
app.run()
https://flask.palletsprojects.com/en/2.0.x/quickstart/
Django
pip3 install django
- 많은 기능을 제공해 주는 프레임워크
=> 소규모 프로젝트에서는 불필요한 기능들로 인한 성능 저하가 발생할 수도 있다. - 기본 제공되는 대략 100줄이 넘는 settings와 url, view, template 등 여러가지 파일을 손봐야한다.
- 거대한 상자와 같아서 그 안을 뒤지면서 필요없는 건 버리고 필요한 것만 남겨놓고 작업해야한다.
- 기본적으로 ORM을 제공
- 인스타, 요기요, 번개장터, 샌드워드 등이 제작됨
Django 사용하기
pip3 install fastapi
# Django 프로젝트 생성
django-admin startproject mysite
django-admin startproject config # 현재 폴더에 프로젝트 구성
# 데이터베이스 모델 관리, 데이터베이스 스키마 업데이트
```python manage.py makemigrations```
```python manage.py migrate```
# 서버를 실행하는 명령어
```python manage.py runserver```
출처
반응형