FastAPI에서 OpenAPI 사양을 사용하여 API 인터페이스를 정의하는 방법

王林
풀어 주다: 2023-07-28 12:09:13
원래의
1706명이 탐색했습니다.

FastAPI에서 OpenAPI 사양을 사용하여 API 인터페이스를 정의하는 방법

소개:
웹 API를 작성할 때 좋은 API 문서가 매우 중요합니다. 개발자가 API를 빠르게 이해하고 사용할 수 있도록 명확한 문서와 인터페이스 정의를 제공할 수 있습니다. OpenAPI 사양은 표준 기반 방식으로 API 문서를 정의하고 생성할 수 있는 강력한 기능과 생태계 지원을 갖춘 범용 API 설명 언어입니다. FastAPI는 OpenAPI 사양을 완벽하게 통합하고 강력한 자동화된 문서 생성 및 확인 기능을 제공하는 최신 Python 웹 프레임워크입니다. 이 기사에서는 OpenAPI 사양을 사용하여 FastAPI에서 API 인터페이스를 정의하고 해당 코드 예제를 제공하는 방법을 소개합니다.

1. FastAPI 및 pydantic 라이브러리 설치
시작하기 전에 FastAPI 및 pydantic 라이브러리를 설치해야 합니다. 다음 명령을 통해 설치할 수 있습니다.

pip install fastapi
pip install uvicorn[standard]
pip install pydantic
로그인 후 복사

2. 간단한 API 인터페이스 만들기
먼저 OpenAPI 사양을 사용하는 방법을 보여주기 위해 간단한 API 인터페이스를 만듭니다. main.py라는 파일에 다음 코드를 작성합니다. main.py的文件中,写入以下代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/hello")
def hello():
    return {"message": "Hello, World!"}
로그인 후 복사

这段代码创建了一个/hello的GET请求接口,并返回一个包含message字段的JSON响应。接下来,我们需要运行这个应用。可以通过以下命令来运行:

uvicorn main:app --reload
로그인 후 복사

三、生成OpenAPI文档
运行应用后,可以在浏览器中打开http://localhost:8000/docs来访问自动生成的API文档。这个页面是由FastAPI自动生成基于OpenAPI规范的文档。你可以看到/hello接口的详细信息,包括路径、请求方法、请求参数和响应示例。并且,你还可以在文档页面中测试这个接口。

四、使用参数定义
在现实的应用中,我们通常需要使用参数来接收用户的输入。FastAPI提供了多种方式来定义参数,包括路径参数、查询参数、请求体参数和请求头参数。下面我们将演示如何使用这些参数。

4.1 路径参数
路径参数是URL中的一部分,它们用于接收动态变量。我们可以通过{}来定义一个路径参数。在下面的示例中,我们创建了一个接受用户ID作为路径参数的接口。

from fastapi import FastAPI

app = FastAPI()

@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"user_id": user_id}
로그인 후 복사

通过运行应用,然后在浏览器中访问http://localhost:8000/users/1,你将得到一个JSON响应{"user_id": 1}

4.2 查询参数
查询参数是URL中的一部分,用于接收用户传递的键值对。在FastAPI中,查询参数可以通过函数参数中的默认值来定义。在下面的示例中,我们创建了一个接受limitoffset查询参数的接口。

from fastapi import FastAPI

app = FastAPI()

@app.get("/users/")
def get_users(limit: int = 10, offset: int = 0):
    return {"limit": limit, "offset": offset}
로그인 후 복사

通过运行应用,然后在浏览器中访问http://localhost:8000/users/?limit=20&offset=10,你将得到一个JSON响应{"limit": 20, "offset": 10}

4.3 请求体参数
请求体参数是通过HTTP请求体传递的数据,通常用于接收较大的数据。在FastAPI中,请求体参数可以通过pydantic库的模型来定义。在下面的示例中,我们创建了一个接受用户信息作为请求体参数的接口。

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    name: str
    age: int

@app.post("/users/")
def create_user(user: User):
    return {"user": user}
로그인 후 복사

运行应用后,使用工具如curl发送一个POST请求:

curl -X POST -H "Content-Type: application/json" -d '{"name":"Alice", "age": 25}' http://localhost:8000/users/
로그인 후 복사

你将得到一个JSON响应{"user": {"name": "Alice", "age": 25}}

4.4 请求头参数
请求头参数是通过HTTP请求头传递的参数,通常用于传递安全验证信息。在FastAPI中,请求头参数可以在函数参数中使用Header()方法来定义。在下面的示例中,我们创建了一个接受api_key请求头参数的接口。

from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/protected/")
def protected(api_key: str = Header(...)):
    return {"api_key": api_key}
로그인 후 복사

通过运行应用,然后在浏览器中访问http://localhost:8000/protected/并携带自定义的api_key请求头,你将得到一个JSON响应{"api_key": <your_api_key>}rrreee

이 코드는 /hello에 대한 GET 요청 인터페이스를 생성하고 다음에 대한 JSON 응답이 포함된 GET 요청 인터페이스를 반환합니다. 메시지 필드. 다음으로 애플리케이션을 실행해야 합니다. 다음 명령을 통해 실행할 수 있습니다:

rrreee
3. OpenAPI 문서 생성

애플리케이션을 실행한 후 브라우저에서 http://localhost:8000/docs를 열어 자동으로 생성된 문서에 액세스할 수 있습니다. API 문서. 이 페이지는 OpenAPI 사양을 기반으로 FastAPI에서 자동 생성된 문서입니다. 경로, 요청 메서드, 요청 매개변수, 응답 예시를 포함하여 /hello 인터페이스의 세부정보를 볼 수 있습니다. 또한 설명서 페이지에서 이 인터페이스를 테스트할 수도 있습니다. 🎜🎜4. 매개변수 정의 사용🎜실제 애플리케이션에서는 일반적으로 사용자 입력을 받기 위해 매개변수를 사용해야 합니다. FastAPI는 경로 매개변수, 쿼리 매개변수, 요청 본문 매개변수, 요청 헤더 매개변수 등 매개변수를 정의하는 다양한 방법을 제공합니다. 아래에서는 이러한 매개변수를 사용하는 방법을 보여줍니다. 🎜🎜4.1 경로 매개변수🎜경로 매개변수는 URL의 일부이며 동적 변수를 받는 데 사용됩니다. {}를 통해 경로 매개변수를 정의할 수 있습니다. 아래 예에서는 사용자 ID를 경로 매개변수로 받아들이는 인터페이스를 만듭니다. 🎜rrreee🎜앱을 실행한 다음 브라우저에서 http://localhost:8000/users/1를 방문하면 JSON 응답 {"user_id": 1}을 받게 됩니다. 코드>. 🎜🎜4.2 쿼리 매개변수🎜 쿼리 매개변수는 URL의 일부이며 사용자가 전달한 키-값 쌍을 받는 데 사용됩니다. FastAPI에서는 함수 매개변수의 기본값을 통해 쿼리 매개변수를 정의할 수 있습니다. 아래 예에서는 limitoffset 쿼리 매개변수를 허용하는 인터페이스를 만듭니다. 🎜rrreee🎜앱을 실행한 다음 브라우저에서 http://localhost:8000/users/?limit=20&offset=10에 액세스하면 JSON 응답 {"limit"을 받게 됩니다. : 20, "오프셋": 10}. 🎜🎜4.3 요청 본문 매개변수🎜요청 본문 매개변수는 HTTP 요청 본문을 통해 전달되는 데이터이며 일반적으로 더 큰 데이터를 수신하는 데 사용됩니다. FastAPI에서 요청 본문 매개변수는 pydantic 라이브러리 모델을 통해 정의할 수 있습니다. 다음 예에서는 사용자 정보를 요청 본문 매개변수로 받아들이는 인터페이스를 만듭니다. 🎜rrreee🎜애플리케이션을 실행한 후 curl과 같은 도구를 사용하여 POST 요청을 보냅니다. 🎜rrreee🎜JSON 응답을 받게 됩니다. {"user": {"name": " 앨리스", "나이": 25}}. 🎜🎜4.4 요청 헤더 매개변수🎜요청 헤더 매개변수는 HTTP 요청 헤더를 통해 전달되는 매개변수이며 일반적으로 보안 확인 정보를 전달하는 데 사용됩니다. FastAPI에서는 함수 매개변수의 Header() 메서드를 사용하여 요청 헤더 매개변수를 정의할 수 있습니다. 아래 예에서는 api_key 요청 헤더 매개변수를 허용하는 인터페이스를 만듭니다. 🎜rrreee🎜애플리케이션을 실행한 다음 브라우저에서 http://localhost:8000/protected/에 액세스하고 사용자 정의 api_key 요청 헤더를 전달하면 JSON을 얻을 수 있습니다. 응답 {"api_key": <your_api_key>}. 🎜🎜결론: 🎜이 글에서는 OpenAPI 사양을 사용하여 FastAPI에서 API 인터페이스를 정의하는 방법을 소개합니다. FastAPI에서 제공하는 데코레이터와 매개변수 유형 주석을 사용하여 API 인터페이스를 쉽게 정의하고 확인할 수 있습니다. 자동으로 생성된 OpenAPI 문서를 통해 API 인터페이스를 빠르게 이해하고 사용할 수 있으며, 다른 개발자와 쉽게 협업하고 소통할 수 있습니다. 이 기사가 FastAPI에서 API 인터페이스를 더 잘 정의하고 사용하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 FastAPI에서 OpenAPI 사양을 사용하여 API 인터페이스를 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!