-
파이썬 FastAPI로 REST API 구현하기컴퓨터/파이썬 2020. 10. 31. 00:08728x90반응형
FastAPI
카카오 챗봇 서버 예제
1. FastAPI 설치
pip install fastapi pip install uvicorn # 위는 ASGI 서버
2. FastAPI 베이스
기본 틀
from typing import Optional from fastapi import FastAPI from fastapi.encoders import jsonable_encoder app = FastAPI() @app.get("/") async def read_root(): return "Hi"
서버 실행
(main은 main.py, 이름에 맞춰 바꿔준다.)
(코드가 수정될 때마다 알아서 새로고침 해준다.)
uvicorn main:app --reload
3. JSON
사용할 데이터는 아래와 같다.
languages = [ { "id": 0, "name": "Python", "designed_by": "Guido van Rossum", "first_appeared": 1991, }, {"id": 1, "name": "Java", "designed_by": "James Gosling", "first_appeared": 1995}, ]
JSONify
from fastapi.encoders import jsonable_encoder @app.get("/items/languges") async def read_language(): return jsonable_encoder({"langs": languages})
GET
/items/languges/0 에 들어가면 아래 JSON이 그대로 나온다.
@app.get("/items/languges/{item_id}") async def get_language(item_id: int): result = {} for lang in languages: if lang["id"] == item_id: result = jsonable_encoder({"language": lang}) break return result
PUT
@app.put("/items/languges") def update_item( item_id: int, name: Optional[str], design: Optional[str], init: Optional[int] ): return languages.append( {"id": item_id, "name": name, "designed_by": design, "first_appeared": init} )
결과
curl -X GET "http://127.0.0.1:8000/items/languges" -H "accept: application/json"
참고
더보기from typing import Optional from fastapi import FastAPI from fastapi.encoders import jsonable_encoder app = FastAPI() languages = [ { "id": 0, "name": "Python", "designed_by": "Guido van Rossum", "first_appeared": 1991, }, {"id": 1, "name": "Java", "designed_by": "James Gosling", "first_appeared": 1995}, ] @app.get("/") async def read_root(): return "Hi" @app.get("/items/languges") async def read_language(): return jsonable_encoder({"langs": languages}) @app.get("/items/languges/{item_id}") async def get_language(item_id: int): result = {} for lang in languages: if lang["id"] == item_id: result = jsonable_encoder({"language": lang}) break return result @app.put("/items/languges") def update_item( item_id: int, name: Optional[str], design: Optional[str], init: Optional[int] ): return languages.append( {"id": item_id, "name": name, "designed_by": design, "first_appeared": init} )
FastAPI 공식 문서 @링크
728x90'컴퓨터 > 파이썬' 카테고리의 다른 글
Python Singly Linked List 함수들 (0) 2020.11.03 파이썬 커스텀 range, iterator (0) 2020.10.30 파이썬 데코레이터 재귀 함수 (0) 2020.10.30