Movatterモバイル変換


[0]ホーム

URL:


Saltar a contenido
Join theFastAPI Cloud waiting list 🚀
Follow@fastapi onX (Twitter) to stay updated
FollowFastAPI onLinkedIn to stay updated
Subscribe to theFastAPI and friends newsletter 🎉
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor

Tipos de Datos Extra

🌐 Traducción por IA y humanos

Esta traducción fue hecha por IA guiada por humanos. 🤝

Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖

Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.

Versión en inglés

Hasta ahora, has estado usando tipos de datos comunes, como:

  • int
  • float
  • str
  • bool

Pero también puedes usar tipos de datos más complejos.

Y seguirás teniendo las mismas funcionalidades como hasta ahora:

  • Gran soporte de editor.
  • Conversión de datos de requests entrantes.
  • Conversión de datos para datos de response.
  • Validación de datos.
  • Anotación y documentación automática.

Otros tipos de datos

Aquí hay algunos de los tipos de datos adicionales que puedes usar:

  • UUID:
    • Un "Identificador Universalmente Único" estándar, común como un ID en muchas bases de datos y sistemas.
    • En requests y responses se representará como unstr.
  • datetime.datetime:
    • Undatetime.datetime de Python.
    • En requests y responses se representará como unstr en formato ISO 8601, como:2008-09-15T15:53:00+05:00.
  • datetime.date:
    • datetime.date de Python.
    • En requests y responses se representará como unstr en formato ISO 8601, como:2008-09-15.
  • datetime.time:
    • Undatetime.time de Python.
    • En requests y responses se representará como unstr en formato ISO 8601, como:14:23:55.003.
  • datetime.timedelta:
    • Undatetime.timedelta de Python.
    • En requests y responses se representará como unfloat de segundos totales.
    • Pydantic también permite representarlo como una "codificación de diferencia horaria ISO 8601",consulta la documentación para más información.
  • frozenset:
    • En requests y responses, tratado igual que unset:
      • En requests, se leerá una list, eliminando duplicados y convirtiéndola en unset.
      • En responses, elset se convertirá en unalist.
      • El esquema generado especificará que los valores delset son únicos (usandouniqueItems de JSON Schema).
  • bytes:
    • bytes estándar de Python.
    • En requests y responses se tratará comostr.
    • El esquema generado especificará que es unstr con "binary" como "format".
  • Decimal:
    • Decimal estándar de Python.
    • En requests y responses, manejado igual que unfloat.
  • Puedes revisar todos los tipos de datos válidos de Pydantic aquí:Tipos de datos de Pydantic.

Ejemplo

Aquí tienes un ejemplo de unapath operation con parámetros usando algunos de los tipos anteriores.

fromdatetimeimportdatetime,time,timedeltafromtypingimportAnnotatedfromuuidimportUUIDfromfastapiimportBody,FastAPIapp=FastAPI()@app.put("/items/{item_id}")asyncdefread_items(item_id:UUID,start_datetime:Annotated[datetime,Body()],end_datetime:Annotated[datetime,Body()],process_after:Annotated[timedelta,Body()],repeat_at:Annotated[time|None,Body()]=None,):start_process=start_datetime+process_afterduration=end_datetime-start_processreturn{"item_id":item_id,"start_datetime":start_datetime,"end_datetime":end_datetime,"process_after":process_after,"repeat_at":repeat_at,"start_process":start_process,"duration":duration,}
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromdatetimeimportdatetime,time,timedeltafromuuidimportUUIDfromfastapiimportBody,FastAPIapp=FastAPI()@app.put("/items/{item_id}")asyncdefread_items(item_id:UUID,start_datetime:datetime=Body(),end_datetime:datetime=Body(),process_after:timedelta=Body(),repeat_at:time|None=Body(default=None),):start_process=start_datetime+process_afterduration=end_datetime-start_processreturn{"item_id":item_id,"start_datetime":start_datetime,"end_datetime":end_datetime,"process_after":process_after,"repeat_at":repeat_at,"start_process":start_process,"duration":duration,}

Nota que los parámetros dentro de la función tienen su tipo de dato natural, y puedes, por ejemplo, realizar manipulaciones de fechas normales, como:

fromdatetimeimportdatetime,time,timedeltafromtypingimportAnnotatedfromuuidimportUUIDfromfastapiimportBody,FastAPIapp=FastAPI()@app.put("/items/{item_id}")asyncdefread_items(item_id:UUID,start_datetime:Annotated[datetime,Body()],end_datetime:Annotated[datetime,Body()],process_after:Annotated[timedelta,Body()],repeat_at:Annotated[time|None,Body()]=None,):start_process=start_datetime+process_afterduration=end_datetime-start_processreturn{"item_id":item_id,"start_datetime":start_datetime,"end_datetime":end_datetime,"process_after":process_after,"repeat_at":repeat_at,"start_process":start_process,"duration":duration,}
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromdatetimeimportdatetime,time,timedeltafromuuidimportUUIDfromfastapiimportBody,FastAPIapp=FastAPI()@app.put("/items/{item_id}")asyncdefread_items(item_id:UUID,start_datetime:datetime=Body(),end_datetime:datetime=Body(),process_after:timedelta=Body(),repeat_at:time|None=Body(default=None),):start_process=start_datetime+process_afterduration=end_datetime-start_processreturn{"item_id":item_id,"start_datetime":start_datetime,"end_datetime":end_datetime,"process_after":process_after,"repeat_at":repeat_at,"start_process":start_process,"duration":duration,}

[8]ページ先頭

©2009-2026 Movatter.jp