Übergeben Sie mehrere JSONResponse im FastAPI-Endpunkt [Duplikat]Python

Python-Programme
Guest
 Übergeben Sie mehrere JSONResponse im FastAPI-Endpunkt [Duplikat]

Post by Guest »

Gute Nacht Leute, ich habe eine Frage. Ich habe eine Funktion auf einem Endpunkt, die Fastapi verwendet. Wenn ich die Anfrage stelle, wird sie ausgeführt und gibt mir JSONResponse(status_code=200, content={"result": 'result') zurück. }) . Bisher ok, aber ich möchte mehr als eine dieser JSONResponse übergeben.
Meine Idee wäre, mehrere zu übergeben, um JSONResponse zu testen, um Tests erstellen und meine APIs testen zu können

Code: Select all

JSONResponse(status_code=500, content={"Erro": result})

JSONResponse(status_code=422, content={"Erro": result})

JSONResponse(status_code=404, content={"Erro": result})
Ich habe sogar einen Endpunkt erstellt, um einen kleinen Test durchzuführen, ob der Fehler zurückkommt. Aber es gibt weiterhin den Statuscode 200 aus.
Ich sehe, dass ich JSONResponse im Code gestapelt habe. Aber es sollte versucht werden herauszufinden, wo das Rückgabeproblem lag.

Code: Select all

@application.post("/division")
def calculator_division(item_to_calculator: Item_to_calculator):
try:
json_item = jsonable_encoder(item_to_calculator)
result =  json_item['first_item'] / json_item['second_item']
except Exception as e:
sys.stdout.write(f'Exception: {e}')
return JSONResponse(status_code=500, content={"Error":'Error'})
return JSONResponse(status_code=200, content={"result": result})

Rückkehr im Terminal:
services-calculator_api-1 | Exception: float division by zeroINFO: 172.23.0.3:60058 - "POST /division HTTP/1.1" 500 Internal Server Error
services-calculator_api-1 | ERROR: Exception in ASGI application
services-calculator_api-1 | Traceback (most recent call last):
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 419, in run_asgi
services-calculator_api-1 | result = await app( # type: ignore[func-returns-value]
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
services-calculator_api-1 | return await self.app(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/applications.py", line 271, in __call__
services-calculator_api-1 | await super().__call__(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/applications.py", line 118, in __call__
services-calculator_api-1 | await self.middleware_stack(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 184, in __call__
services-calculator_api-1 | raise exc
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 162, in __call__
services-calculator_api-1 | await self.app(scope, receive, _send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
services-calculator_api-1 | raise exc
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
services-calculator_api-1 | await self.app(scope, receive, sender)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
services-calculator_api-1 | raise e
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
services-calculator_api-1 | await self.app(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 706, in __call__
services-calculator_api-1 | await route.handle(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 276, in handle
services-calculator_api-1 | await self.app(scope, receive, send)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 66, in app
services-calculator_api-1 | response = await func(request)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 237, in app
services-calculator_api-1 | raw_response = await run_endpoint_function(
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 165, in run_endpoint_function
services-calculator_api-1 | return await run_in_threadpool(dependant.call, **values)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/starlette/concurrency.py", line 41, in run_in_threadpool
services-calculator_api-1 | return await anyio.to_thread.run_sync(func, *args)
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/anyio/to_thread.py", line 31, in run_sync
services-calculator_api-1 | return await get_asynclib().run_sync_in_worker_thread(
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 937, in run_sync_in_worker_thread
services-calculator_api-1 | return await future
services-calculator_api-1 | File "/usr/local/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 867, in run
services-calculator_api-1 | result = context.run(func, *args)
services-calculator_api-1 | File "/apis/./app/main.py", line 58, in calculator_division
services-calculator_api-1 | return JSONResponse(status_code=200, content={"result": result})
services-calculator_api-1 | UnboundLocalError: local variable 'result' referenced before assignment

< /code>
Ich möchte eine andere Möglichkeit wissen, mehrere verschiedene Status_code -Antworten zu übergeben, damit ich die Endpunktaufrufe testen kann. Weil die Ausnahme nicht sehr gut funktioniert. Vielen Dank für Ihre Aufmerksamkeit. Gute nachts. Weil die Ausnahme nicht sehr gut funktioniert. Vielen Dank für Ihre Aufmerksamkeit. Gute Nacht.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post