Comment gérer les requêtes POST et renvoyer les réponses JSON dans FastAPI
FastAPI est un framework Web rapide (hautes performances), facile à utiliser et moderne basé sur des astuces de type Python standard. Il dispose d’un fort support asynchrone et peut facilement gérer des situations de concurrence élevée. Dans FastAPI, nous pouvons utiliser un code concis pour gérer les requêtes POST et renvoyer les réponses JSON. Cet article décrira comment accomplir cette tâche dans FastAPI et fournira des exemples de code correspondants.
Tout d'abord, nous devons créer une application FastAPI. Voici le code de base pour créer l'application :
from fastapi import FastAPI app = FastAPI()
Ensuite, nous devons créer une route qui gérera les requêtes POST. FastAPI utilise des décorateurs pour définir des itinéraires. Voici un exemple de gestion d'une requête POST :
@app.post("/api/submit") async def submit_data(data: dict): # 在这里进行数据处理 # ... # 返回JSON响应 return {"message": "Data submitted successfully"}
Dans l'exemple ci-dessus, nous avons défini une route à l'aide du décorateur @app.post
avec le chemin de /api/submit </ code>, la méthode de requête est POST. La fonction de routage <code>submit_data
accepte un paramètre nommé data
, le type de paramètre est dict
, qui sera utilisé pour recevoir les données dans la requête POST. @app.post
定义了一个路由,该路由的路径为/api/submit
,请求方法为POST。路由函数submit_data
接受一个名为data
的参数,参数类型为dict
,它将用于接收POST请求中的数据。
在submit_data
函数中,我们可以进行数据处理的逻辑,如验证数据、保存到数据库等等。然后,我们使用return
语句返回一个JSON响应。在这个示例中,我们返回了一个包含键"message"
和值"Data submitted successfully"
的字典。
注意,在FastAPI中,使用async def
来定义异步函数,这样可以充分利用框架的异步特性,提高性能。
为了使应用程序能够运行起来,我们需要添加以下代码:
if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)
以上代码将使应用程序运行在本地的0.0.0.0
地址上,监听端口8000。
现在,我们已经完成了在FastAPI中处理POST请求并返回JSON响应的基本代码。我们可以通过向/api/submit
发送一条POST请求,并在请求体中包含JSON数据来测试我们的应用程序。
以下是一个使用Python requests
库发送POST请求的示例:
import requests data = {"name": "John", "age": 30} response = requests.post("http://localhost:8000/api/submit", json=data) print(response.json())
在上面的示例中,我们创建了一个字典data
,包含了一些数据。然后,我们使用requests.post
方法发送POST请求,并通过json
参数将数据作为JSON发送。最后,我们使用response.json()
submit_data
, nous pouvons effectuer une logique de traitement des données, telle que la vérification des données, l'enregistrement dans la base de données, etc. Ensuite, nous utilisons l'instruction return
pour renvoyer une réponse JSON. Dans cet exemple, nous renvoyons un dictionnaire contenant la clé "message"
et la valeur "Données soumises avec succès"
. Notez que dans FastAPI, utilisez async def
pour définir des fonctions asynchrones, qui peuvent exploiter pleinement les fonctionnalités asynchrones du framework et améliorer les performances. 🎜🎜Pour que l'application s'exécute, nous devons ajouter le code suivant : 🎜rrreee🎜Le code ci-dessus permettra à l'application de s'exécuter sur l'adresse locale 0.0.0.0
et d'écouter sur le port 8000. 🎜🎜Maintenant, nous avons terminé le code de base pour gérer une requête POST dans FastAPI et renvoyer une réponse JSON. Nous pouvons tester notre application en envoyant une requête POST à /api/submit
et en incluant des données JSON dans le corps de la requête. 🎜🎜Voici un exemple d'envoi d'une requête POST à l'aide de la bibliothèque Python requests
: 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons créé un dictionnaire data
qui contient des données. Nous envoyons ensuite la requête POST en utilisant la méthode requests.post
et envoyons les données au format JSON via le paramètre json
. Enfin, nous utilisons la méthode response.json()
pour obtenir les données JSON de réponse et les imprimer. 🎜🎜Avec l'exemple simple ci-dessus, nous montrons comment gérer les requêtes POST et renvoyer les réponses JSON dans FastAPI. FastAPI fournit une conception d'API simple et puissante, nous permettant de créer des applications Web plus efficacement. J'espère que cet article pourra être utile au processus d'utilisation de FastAPI pour gérer les requêtes POST. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!