본문 바로가기
API

Fast-API (속성 1일차)

by 자몽먹은토끼 2024. 1. 31.
728x90
반응형

내가 아는 API 는 인터넷 주소(?)로 온라인에서 가져올 수 있는 것들을 가져와 사용하는 것이다

 

fastapi 공식문서 : https://fastapi.tiangolo.com/

 

FastAPI

FastAPI framework, high performance, easy to learn, fast to code, ready for production

fastapi.tiangolo.com

FastAPI 란? 요청(request)하면 그에 맞는 응답(response)을 보내주는 역할을 하는 도구

 

pip install fastapi

를 통해 설치 가능!

 

ASGI ( 비동기식 서비스 게이트웨이 ) 서버...도 필요하다는데 뭔지 모르겠다 일단 패스

- 동기 : 일이 들어온 순서대로 처리

- 비동기 : 시간을 쪼개서 들어온대로 처리하다가------- 뭐라는지 모르겠

 

 

 

 

Uvicon [유비콘] : 웹서버를 지원하는 것

                            서비스 클라이언트 통신?

                            비동기 처리가 가능한 웹서버

 

 

이론

 

 

step 1) main.py 파일 만들기

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}
    # 고객?에게 보여짐???


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

- @app 다음에 무조건 함수를 정의해야함

- @app이랑 함수 사이에는 어떤 것도 들어갈 수 없음

 

 

step2) 실행하기

step3) 확인하기

브라우저로 http://127.0.0.1:8000/items/5?q=somequery를 열어보면

아래의 JSON 응답을 볼 수 있다

{"item_id": 5, "q": "somequery"}

 

 

 

 

 

실습

 

 

step1) 가상환경 만들기

 

터미널 접속 (terminal or cmd)

fastapi 폴더(실습할 폴더)를 하나 만들어서 (mkdir 폴더이름)

그 경로에 위치한 상태로 (cd 폴더이름)

 python -m venv fa_venv

터미널 창에 입력

> 그러면 실습 폴더 내에 fa_venv 파일이 생성됨

 

 

step2) 가상환경 접속

 

scripts폴더 내 activate 파일이 있는 경로까지 위치한 뒤에 (cd 폴더이름)

activate 실행 ( 그냥 파일이름 넣기 ) > 안되면 ./파일이름

(fa_venv) C:\aix_3\fastapi_ex\fa_venv\Scripts>

> 그러면 이렇게 앞에 (fa_venv)가 뜨는데 이게 가상환경에 접속되었다는 뜻!

 

 

step3) 가상환경에 라이브러리 설치

pip list

> 가상환경에는 아무것도 안깔려 있음(기본)을 확인할 수 있음

 

pip install fastapi
pip install uvicorn

 

두가지 설치 해주기!

 

 

step4) 실행파일 만들기

main.py 파일 만들어주기 (basic 폴더 안에)

 

 

step5) 간단한 코드로 app 만들기

"/" : URL을 받음?

from fastapi import FastAPI

# 식별자를 변수에 넣음
app = FastAPI()

@app.get("/") # url을 받음?
def hello():
    return "hello"

 

이후 터미널에 입력

uvicorn main:app --reload

; 파일 저장시 재로딩 됨 (= 저장만 하면 인터넷 창에서 새로고침시 변경된 사항 나타남)

 

 

> 터미널에 나오는 링크로 들어가본다

그러면

 

 

<함수 추가>

@app.get("/test")
def test(): # 앤드포인트 함수
    test= "path 테스트"
    return {"test": test}

 

이 함수(?)를 아래에 추가하면 url에 "/test"를 추가했을때의 페이지가 생성됨

> 짠!

 

총 응용코드

from fastapi import FastAPI

# 식별자를 변수에 넣음
app = FastAPI()

@app.get("/") # url을 받음?
def hello():
    return "hello"

@app.get("/test")
def test(): # 앤드포인트 함수
    test= "path 테스트"
    return {"test": test}

@app.get("/add")
def add(): # 앤드포인트 함수
    test= "add 테스트"
    return {"add": test}

 

실행결과

 

* 주의할 점은

1  파일을 꼭 저장하고 웹 새로고침 하자!

2  함수 이름은 상관없음 > 어차피 @app 바로 아래있는 함수만 실행하고 끝난다.

3  ctrl+c : 가상환경 나오기(종료)

 

 

 

 

 

 

 

 

 

 


 

해석기 (interpreter) 꼬여있거나 잘못 할당(설정) 되어있을 수 있으므로 확인해보기

저 빨간 동그라미 부분 클릭해서 새로 추가하기(enter~) - 찾기(find) 눌러서

가상환경 폴더에 있는 python 파일을 interpreter로 설정해주기

 

 

 

 

 


<fastapi>

  • 기본구조는 flask와 유사
  • python 웹 프레임워크
  • ASGI 애플리케이션 ; 클라이언트에 요청이 왔을 때, 서버에 비동기식 구동을 한다?
    > Uvicorn 과 연동이 잘 되는 구조(?)

 

  • 배우기 쉽고, 동시처리가 가능하다
  • 모던 파이썬 문법을 따름(3.6.x+)
    > 비동기키워드: async, await
    > 타입힌트: 정적 type hint 제공

 

  • openapi기반
    > 자동문서생성
    > Swager 지원
728x90
반응형

'API' 카테고리의 다른 글

[FastAPI] API 구현 (GET, POST, DELETE)  (0) 2024.10.26
[HTML + CSS] API 배우기 기본  (5) 2024.10.08
FastAPI (속성 3일차)  (0) 2024.02.03
Fast-API (속성 2일차)  (0) 2024.02.01