Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

391
Visualizações
Tipo que no se puede modificar en la solicitud de FastAPI

Estoy escribiendo una post-api usando fastapi. El formato de solicitud requerido es:

 { "leadid":LD123, "parties":[ { "uid":123123, "cust_name":"JOhn Doe", }, ...]}

El código fastapi en python es:

 class Customer(BaseModel): UID: str CustName: str class PackageIn(BaseModel): lead_id: str parties: Set[Customer] # threshold: Optional[int] = 85 app = FastAPI() @app.post('/') async def nm_v2(package:PackageIn): return {"resp":"Response"}

Cuando visito SwaggerUI para enviar la respuesta, el error es "Error 422: Entidad no procesable" . Además, el documento SwaggerUI establece

 { "detail": [ { "loc": [ "body" ], "msg": "unhashable type: 'Customer'", "type": "type_error" } ] }

No sé cómo crear esta estructura dict () para la carga útil de la solicitud sin crear una clase basada en pydantic separada llamada Cliente. Por favor, dígame cómo rectificar el error.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Pytdantic BaseClass no es hashable. Hay una discusión sobre esta función, supongo que no se implementará. Hay una solución en la discusión, para su caso puede probar esto:

 from pydantic import BaseModel from typing import Set class MyBaseModel(BaseModel): def __hash__(self): # make hashable BaseModel subclass return hash((type(self),) + tuple(self.__dict__.values())) class Customer(MyBaseModel): # Use hashable sublclass for your model UID: str CustName: str class PackageIn(BaseModel): lead_id: str parties: Set[Customer] # threshold: Optional[int] = 85 data = { "lead_id": 'LD123', "parties": [ { "UID": 123123, "CustName": "JOhn Doe", }]} PackageIn.parse_obj(data) # This part fastapi will make on post request, just for test > <PackageIn lead_id='LD123' parties={<Customer UID='123123' CustName='JOhn Doe'>}>
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda