Wie nutze ich Abfrageparameter von POST in FastAPI?Python

Python-Programme
Anonymous
 Wie nutze ich Abfrageparameter von POST in FastAPI?

Post by Anonymous »

Ich möchte eine Route in FastAPI schreiben, um eine POST-Anfrage zu verarbeiten. Ich habe das folgende URL-Beispiel:

Code: Select all

https://URL.com/api/FlexfoneCall/outgoing?AccountId=1234&TimeStamp=2021-05-20+08%3a30%3a56&UniqueCallId=SIP%2f%2b4512345678-0000e4a81463430317&EmployeeLocalNumber=200&ANumber=12345678&BNumber=87654321&PhoneLocalNumber=123456
Allerdings bin ich es nur gewohnt, den Körper auf Anfrage zu konsumieren. Wie „rufe“ ich die Pfadparameterdaten aus dem obigen Beispiel ab?
BEARBEITEN:
Ich versuche, einen Dienst zu schreiben, der die obige URL von einem externen Dienst empfängt. Ich habe Folgendes versucht, weil ich dachte, dass meine Route so aussehen sollte, da es ein POST war:

Code: Select all

@app.post('/callout', response_model=CallIn)
async def create_call_out(callout: CallOut, db: Session = Depends(get_db)):
db_write_call_out = write_call_out(db, callout)

return db_write_call_out
Mit dem folgenden Pydantic-Modell:

Code: Select all

class CallOut(BaseModel):
accountid: str = None
timestamp: str = None
uniquecallid: str = None
employeelocalnumber: str = None
anumber: str = None
bnumber: str = None
phonelocalnumber: str = None

class Config:
orm_mode = True
Und CRUD-Funktion:

Code: Select all

def write_call_out(db: Session, callout: CallOut):
db_write_call_out = DBCallOut(**callout.dict())
db.add(db_write_call_out)
db.commit()
db.refresh(db_write_call_out)

return db_write_call_out
SQLAlchemy ORM-Modell zum Schreiben der Abfrageparameter in eine SQL-Datenbank:

Code: Select all

class DBCallOut(Base):
__tablename__ = "call_out"

accountid = Column('AccountId', String(250))
uniquecallid = Column('UniqueCallId', String(250))
employeelocalnumber = Column('EmployeeLocalNumber', String(250))
anumber = Column('ANumber', String(250))
timestamp = Column('TimeStamp', String(250))
phonelocalnumber = Column('PhoneLocalNumber', String(250))
bnumber = Column('BNumber', String(250))
ID = Column(Integer,  primary_key=True,  index=True, autoincrement=True)
Aber ich erhalte ständig den Fehler 422.
EDIT 2:
Am Ende habe ich meine Route wie folgt geändert:

Code: Select all

@app.get('/call')
async def outgoing(AccountId: str,
TimeStamp: str,
UniqueCallId: str,
EmployeeLocalNumber: str,
ANumber: str,
BNumber: str,
PhoneLocalNumber: str, db: Session = Depends(get_db)):
callout = {"AccountId": AccountId,
"TimeStamp": TimeStamp,
"UniqueCallId": UniqueCallId,
"EmployeeLocalNumber": EmployeeLocalNumber,
"ANumber": ANumber,
"BNumber": BNumber,
"PhoneLocalNumber": PhoneLocalNumber}
db_write_call_out = write_call_out(db, callout)

return db_write_call_out
Das funktioniert, ist aber etwas umständlich.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post