API란?
: Application Programming Interface
정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다. 이는 고유한 기능을 가진 소프트웨어 간의 요청과 응답을 사용한 통신을 뜻한다.
FastAPI란?
현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.8+의 API를 빌드하기 위한 웹 프레임워크 (공식 사이트 설명)
terminal
`pip install fastapi`
`pip install "uvicorn[standard]"`
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return 'hello'
이렇게 해서 `uvicorn main:app --reload` 명령어를 실행하고
만들어진 페이지에 접속하면 "hello"를 출력한다.
favicorn 에러
내 경우에는 처음부터 favicorn 에러가 나기 시작했다.
실행한 창에는 'Internal Server Error'라고 떴다.
문제는... 검색해봐도 안 되는 사람이 아무도 없었다.
(😥 나만... 안 되나본데...?)
`"GET /favicon.ico HTTP/1.1" 500`
favicorn이 같은 경로에 있지 않아서 생기는 error라고 한다.
flask에서는 이렇게 해결 하는 것 같았다.
import os
from flask import Flask, send_from_directory
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, '파일명'),
'favicon.ico', mimetype='image/v[nd.microsoft.icon')
근데 fastapi에서는 send from directroy를 지원하지 않는다며 오류가 나서 사용할 수 없었다.
그리고 ChatGPT와 시도해본 것들...
- favicon을 넣는 함수를 추가
- vs code의 language server를 변경
- fastapi와 starlette를 업그레이드
- 미들웨어 관련 코드를 추가&수정
- --port 8000
- fastapi와 starlette의 호환 버전을 확인해 교체
- fastapi와 starlette 라이브러리 재설치
해결 방법
# main.py
from fastapi import FastAPI, Response
from fastapi.responses import HTMLResponse
app = FastAPI()
@app.get("/favicon.ico", response_class=HTMLResponse)
async def favicon():
return Response(content="", media_type="image/x-icon")
@app.get("/")
def read_root():
return {"hello"}
1. 일단 설치된 fastapi와 starlette를 제거했다.
`pip uninstall fastapi starlette`
2. myenv라는 이름의 가상공간을 만들었다.
`python -m venv myenv`
3. myenv 가상환경 활성화
`source myenv/bin/activate`
4. fastapid와 starlette 재설치
`pip install fastapi starlette`
`pip install "uvicorn[standard]"`
5. 재실행
`uvicorn main:app --reload --port 8000`
6. (추가사항) 패키지 설치 확인 방법
`pip list | grep fastapi`
`pip list | grep starlette`
'언어 및 개념 일반' 카테고리의 다른 글
| [C] 📥 입출력 함수 (3) | 2025.01.13 |
|---|---|
| 컴파일 에러와 런타임 에러 (1) | 2025.01.03 |
| 책 따라 Git 기릿🌱: Chapter. 3 (1) | 2024.12.24 |
| 책 따라 Git 기릿🌱: Chapter. 2 (1) | 2024.12.23 |
| 책 따라 Git 기릿🌱: Chapter. 0 1 (4) | 2024.11.22 |