Heim  >  Artikel  >  Backend-Entwicklung  >  So definieren Sie eine API-Schnittstelle mithilfe der OpenAPI-Spezifikation in FastAPI

So definieren Sie eine API-Schnittstelle mithilfe der OpenAPI-Spezifikation in FastAPI

王林
王林Original
2023-07-28 12:09:131730Durchsuche

So definieren Sie eine API-Schnittstelle mithilfe der OpenAPI-Spezifikation in FastAPI

Einführung:
Beim Schreiben einer Web-API ist eine gute API-Dokumentation sehr wichtig. Es kann eine klare Dokumentation und Schnittstellendefinitionen bereitstellen, um Entwicklern dabei zu helfen, APIs schnell zu verstehen und zu verwenden. Die OpenAPI-Spezifikation ist eine universelle API-Beschreibungssprache mit leistungsstarken Funktionen und Ökosystemunterstützung, die es uns ermöglicht, API-Dokumente auf standardbasierte Weise zu definieren und zu generieren. FastAPI ist ein modernes Python-Webframework, das die OpenAPI-Spezifikation perfekt integriert und leistungsstarke Funktionen zur automatisierten Dokumentgenerierung und -überprüfung bietet. In diesem Artikel wird erläutert, wie Sie mithilfe der OpenAPI-Spezifikation API-Schnittstellen in FastAPI definieren und entsprechende Codebeispiele bereitstellen.

1. Installieren Sie FastAPI und Pydantic-Bibliotheken.
Bevor wir beginnen, müssen wir FastAPI und Pydantic-Bibliotheken installieren. Sie können über den folgenden Befehl installiert werden:

pip install fastapi
pip install uvicorn[standard]
pip install pydantic

2. Erstellen Sie eine einfache API-Schnittstelle
Zuerst erstellen wir eine einfache API-Schnittstelle, um zu demonstrieren, wie die OpenAPI-Spezifikation verwendet wird. Schreiben Sie in eine Datei mit dem Namen main.py den folgenden Code: 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": ca574589290ec34dada9d6aea704ff33}rrreee

Dieser Code erstellt eine GET-Anfrageschnittstelle für /hello und gibt eine GET-Anfrageschnittstelle zurück, die eine JSON-Antwort für enthält das Feld message. Als nächstes müssen wir die Anwendung ausführen. Es kann über den folgenden Befehl ausgeführt werden:

rrreee
3. Generieren Sie die OpenAPI-Dokumentation

Nachdem Sie die Anwendung ausgeführt haben, können Sie http://localhost:8000/docs im Browser öffnen, um auf die automatisch generierte Dokumentation zuzugreifen API-Dokumentation. Diese Seite ist ein von FastAPI automatisch generiertes Dokument basierend auf der OpenAPI-Spezifikation. Sie können die Details der /hello-Schnittstelle sehen, einschließlich Pfad, Anforderungsmethode, Anforderungsparameter und Antwortbeispiele. Darüber hinaus können Sie diese Schnittstelle auch auf der Dokumentationsseite testen. 🎜🎜4. Parameterdefinition verwenden🎜In realen Anwendungen müssen wir normalerweise Parameter verwenden, um Benutzereingaben zu empfangen. FastAPI bietet mehrere Möglichkeiten zum Definieren von Parametern, einschließlich Pfadparametern, Abfrageparametern, Anforderungshauptteilparametern und Anforderungsheaderparametern. Im Folgenden zeigen wir, wie diese Parameter verwendet werden. 🎜🎜4.1 Pfadparameter🎜Pfadparameter sind Teil der URL, sie dienen zum Empfang dynamischer Variablen. Wir können einen Pfadparameter über {} definieren. Im folgenden Beispiel erstellen wir eine Schnittstelle, die eine Benutzer-ID als Pfadparameter akzeptiert. 🎜rrreee🎜Wenn Sie die App ausführen und dann http://localhost:8000/users/1 in Ihrem Browser aufrufen, erhalten Sie eine JSON-Antwort {"user_id": 1 Code>. 🎜🎜4.2 Abfrageparameter🎜Abfrageparameter sind Teil der URL und werden verwendet, um vom Benutzer übergebene Schlüssel-Wert-Paare zu empfangen. In FastAPI können Abfrageparameter über Standardwerte in Funktionsparametern definiert werden. Im folgenden Beispiel erstellen wir eine Schnittstelle, die die Abfrageparameter <code>limit und offset akzeptiert. 🎜rrreee🎜Wenn Sie die App ausführen und dann in Ihrem Browser auf http://localhost:8000/users/?limit=20&offset=10 zugreifen, erhalten Sie eine JSON-Antwort {"limit" : 20, „Offset“: 10. 🎜🎜4.3 Anforderungskörperparameter🎜Anforderungskörperparameter sind Daten, die über den HTTP-Anforderungskörper übergeben werden und normalerweise zum Empfang größerer Daten verwendet werden. In FastAPI können Anforderungskörperparameter über das Modell der pydantic-Bibliothek definiert werden. Im folgenden Beispiel erstellen wir eine Schnittstelle, die Benutzerinformationen als Parameter des Anforderungshauptteils akzeptiert. 🎜rrreee🎜Verwenden Sie nach dem Ausführen der Anwendung ein Tool wie curl, um eine POST-Anfrage zu senden: 🎜rrreee🎜Sie erhalten eine JSON-Antwort {"user": {"name": " Alice“, „Alter“: 25}}. 🎜🎜4.4 Anforderungsheader-Parameter🎜Anforderungsheader-Parameter sind Parameter, die über HTTP-Anforderungsheader übergeben werden und normalerweise zur Übergabe von Sicherheitsüberprüfungsinformationen verwendet werden. In FastAPI können Anforderungsheader-Parameter mithilfe der Methode Header() in Funktionsparametern definiert werden. Im folgenden Beispiel erstellen wir eine Schnittstelle, die den Anforderungsheader-Parameter api_key akzeptiert. 🎜rrreee🎜Wenn Sie die Anwendung ausführen und dann im Browser auf http://localhost:8000/protected/ zugreifen und den benutzerdefinierten api_key-Anforderungsheader mitführen, erhalten Sie einen JSON Antwort {"api_key": ca574589290ec34dada9d6aea704ff33}. 🎜🎜Fazit: 🎜In diesem Artikel wird erläutert, wie Sie mithilfe der OpenAPI-Spezifikation API-Schnittstellen in FastAPI definieren. Mithilfe der von FastAPI bereitgestellten Dekoratoren und Parametertypanmerkungen können wir API-Schnittstellen einfach definieren und überprüfen. Durch die automatisch generierte OpenAPI-Dokumentation können wir die API-Schnittstelle schnell verstehen und nutzen und problemlos mit anderen Entwicklern zusammenarbeiten und kommunizieren. Ich hoffe, dieser Artikel kann Ihnen dabei helfen, API-Schnittstellen in FastAPI besser zu definieren und zu verwenden. 🎜

Das obige ist der detaillierte Inhalt vonSo definieren Sie eine API-Schnittstelle mithilfe der OpenAPI-Spezifikation in FastAPI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn