Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
fastapi [2023/06/28 15:08] xavier_fibla_agustin [Templates] |
fastapi [2023/06/28 16:03] (actual) xavier_fibla_agustin [Requests i responses] |
||
|---|---|---|---|
| Línia 80: | Línia 80: | ||
| =====Requests i responses===== | =====Requests i responses===== | ||
| - | PENDENT | ||
| + | ====Path parameters==== | ||
| + | FastAPI ens permet obtenir dades dinàmiques de les peticions directament de la URL: | ||
| + | <file python main.py> | ||
| + | @app.get("/ | ||
| + | async def student_info(id: | ||
| + | ..... | ||
| + | ..... | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ====Query parameters==== | ||
| + | Son paràmetres del tipus clau-valor i s' | ||
| + | |||
| + | <WRAP center round box 100%> | ||
| + | http:// | ||
| + | </ | ||
| + | |||
| + | <file python main.py> | ||
| + | @app.get("/ | ||
| + | async def get_students(skip: | ||
| + | .... | ||
| + | .... | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====Default parameters==== | ||
| + | Seguint amb l' | ||
| + | |||
| + | En el següent exemple, els valors per defecte dels dos paràmetres, | ||
| + | |||
| + | <WRAP center round box 100%> | ||
| + | http:// | ||
| + | </ | ||
| + | |||
| + | <file python main.py> | ||
| + | @app.get("/ | ||
| + | async def get_students(skip: | ||
| + | .... | ||
| + | .... | ||
| + | </ | ||
| + | |||
| + | ====Optional parameters==== | ||
| + | Podem declarar paràmetre opcionals, ja siguin paràmtres de la //query// o per //path//. Per fer-ho, necessitem importar el tipus // | ||
| + | <file python main.py> | ||
| + | from typing import Optional | ||
| + | |||
| + | @app.get("/ | ||
| + | async def chek_student(id: | ||
| + | .... | ||
| + | .... | ||
| + | </ | ||
| =====Templates===== | =====Templates===== | ||
| + | FastAPI pot integrar el motor de plantilles Jinja on podem utilitzar una sintaxi semblant a Python, és molt semblant al motor de plantilles de Django. | ||
| Referències teoria i documentació: | Referències teoria i documentació: | ||
| [[https:// | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | Primer s'ha d' | ||
| + | <WRAP center round box 100%> | ||
| + | **pip install jinja2** | ||
| + | </ | ||
| + | |||
| + | Per utilitzar les plantilles s'han d' | ||
| + | |||
| + | També podem carregar fitxer estàtics com poden ser els css, en aquest cas tenim un carpeta anomenada //static// on tenim les nostres fulles d' | ||
| + | Si ens fixem en la resposta de l'// | ||
| + | |||
| + | <file python main.py> | ||
| + | from fastapi.templating import Jinja2Templates | ||
| + | from fastapi.staticfiles import StaticFiles | ||
| + | |||
| + | templates = Jinja2Templates(directory=" | ||
| + | |||
| + | app = FastAPI() | ||
| + | |||
| + | app.mount("/ | ||
| + | |||
| + | @app.get("/ | ||
| + | async def ruckus(request: | ||
| + | .... | ||
| + | devices = db.query(models.Ruckus).order_by(models.Ruckus.id.desc()) | ||
| + | return templates.TemplateResponse(" | ||
| + | {" | ||
| + | |||
| + | </ | ||
| + | Com podem veure en el fitxer index.html podem tenir un fitxer principal o base (en el cas de l' | ||
| + | En la resposta de la API estem tornant un array d' | ||
| <file html index.html> | <file html index.html> | ||
| Línia 96: | Línia 181: | ||
| {% block content %} | {% block content %} | ||
| - | <h2>Alumnes</h2> | + | <h2>Dispositius</h2> |
| <div class=" | <div class=" | ||