Спокойной ночи, ребята, у меня есть вопрос, у меня есть функция в конечной точке, используя FastApi, когда я делаю запрос, он выполняет и возвращает мне возвращать JSonResponse (status_code = 200, content = {"result": 'Результат' }) . Хорошо, пока, но я хочу передать больше, чем один из этого JSonResponse. p>
Я даже создал конечную точку, чтобы немного проверить, возвращается ли ошибка. Но он продолжает выдавать код состояния 200.
Я вижу, что я запаковал JSONResponse в код. Но это было сделано для того, чтобы попытаться выяснить, в чем заключалась проблема с возвратом.
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
Я хочу знать другой способ передачи нескольких разных ответов status_code, чтобы можно было протестировать вызовы конечной точки. Потому что исключение работает не очень хорошо. Спасибо за внимание. Спокойной ночи.
Я хочу знать другой способ передать несколько разных ответов status_code, чтобы можно было протестировать вызовы конечной точки. Потому что исключение работает не очень хорошо. Спасибо за внимание. Спокойной ночи.
Спокойной ночи, ребята, у меня есть вопрос, у меня есть функция в конечной точке, используя FastApi, когда я делаю запрос, он выполняет и возвращает мне возвращать JSonResponse (status_code = 200, content = {"result": 'Результат' }) . Хорошо, пока, но я хочу передать больше, чем один из этого JSonResponse. p> [code]JSONResponse(status_code=500, content={"Erro": result})
JSONResponse(status_code=404, content={"Erro": result}) [/code] Я даже создал конечную точку, чтобы немного проверить, возвращается ли ошибка. Но он продолжает выдавать код состояния 200. Я вижу, что я запаковал JSONResponse в код. Но это было сделано для того, чтобы попытаться выяснить, в чем заключалась проблема с возвратом. [code]@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})
[/code] Возврат в терминале: [code]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] Я хочу знать другой способ передачи нескольких разных ответов status_code, чтобы можно было протестировать вызовы конечной точки. Потому что исключение работает не очень хорошо. Спасибо за внимание. Спокойной ночи. Я хочу знать другой способ передать несколько разных ответов status_code, чтобы можно было протестировать вызовы конечной точки. Потому что исключение работает не очень хорошо. Спасибо за внимание. Спокойной ночи.