Maison >développement back-end >Tutoriel Python >Comment publier des données JSON sur FastAPI sans l'interface utilisateur Swagger ?

Comment publier des données JSON sur FastAPI sans l'interface utilisateur Swagger ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 05:26:02871parcourir

How to Post JSON Data to FastAPI Without Swagger UI?

Publication de données JSON sur FastAPI sans l'interface utilisateur Swagger

Lorsque vous travaillez avec FastAPI, il est utile de comprendre comment publier des données JSON sur son backend sans en s'appuyant sur l'interface utilisateur Swagger. Cette approche permet la publication directe des données via une URL spécifiée et la récupération des résultats dans le navigateur.

À l'aide d'une interface Javascript

Pour y parvenir, vous pouvez implémenter un Interface Javascript telle que Fetch API, qui permet la soumission de données au format JSON. Prenons l'exemple de code suivant :

<code class="javascript">body: JSON.stringify({name: "foo", roll: 1})</code>

Cet extrait de code convertit l'objet Javascript en JSON pour la transmission.

Implémentation du frontend

Pour interagir avec le backend FastAPI, vous pouvez exploiter l'une des méthodes suivantes :

  • Jinja2Templates : Cette technique implique le rendu d'un modèle HTML/JS qui comprend un formulaire pour soumettre des données. Les données du formulaire peuvent ensuite être converties en JSON.
  • Publication JSON directe : à l'aide de l'API Fetch, vous pouvez publier directement des données JSON sans impliquer de formulaire.

Exemple d'implémentation

Considérez l'exemple d'implémentation suivant en Python :

app.py

<code class="python">from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
from pydantic import BaseModel

app = FastAPI()
templates = Jinja2Templates(directory="templates")

class Item(BaseModel):
    name: str
    roll: int
    
@app.post("/")
async def create_item(item: Item):
    return item

@app.get("/")
async def index(request: Request):
    return templates.TemplateResponse("index.html", {"request": request})</code>

templates/index.html

<code class="html"><!DOCTYPE html>
<html>
   <body>
      <h1>Post JSON Data</h1>
      <form method="post" id="myForm">
         name : <input type="text" name="name" value="foo">
         roll : <input type="number" name="roll" value="1">
         <input type="button" value="Submit" onclick="submitForm()">
      </form>
      <div id="responseArea"></div>
      <script>
         function submitForm() {
             var formElement = document.getElementById('myForm');
             var data = new FormData(formElement);
             fetch('/', {
                   method: 'POST',
                   headers: {
                     'Accept': 'application/json',
                     'Content-Type': 'application/json'
                 },
                   body: JSON.stringify(Object.fromEntries(data))
                 })
                 .then(resp => resp.text())  // or, resp.json(), etc.
                 .then(data => {
                   document.getElementById("responseArea").innerHTML = data;
                 })
                 .catch(error => {
                   console.error(error);
                 });
         }
      </script>
   </body>
</html></code>

En suivant ces étapes, vous pouvez publier efficacement des données JSON sur un backend FastAPI sans avoir besoin de l'interface utilisateur Swagger. Cette approche permet une plus grande flexibilité et une interaction directe avec le backend via l'URL spécifiée.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn