У меня есть слушатель Webhook, который использует Apirouter для обозначения маршрута для приложения на сервере FastAPI. Приложение должно получить запрос Post (ожидая данных в формате JSON) и войти в это в консоли. Тем не менее, я получаю последовательные перенаправления. Я попытался сделать следующее с curl: < /p>
curl -X 'POST' \
'http://127.0.0.1:8010/webhook' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"data": {"UK":"test"}}'
< /code>
Слушатель: < /p>
import hmac
from logging import Logger, info
from fastapi import APIRouter, FastAPI, Header, Request, Response
from router.router1 import rout
from pydantic import BaseModel
WEBHOOK_SECRET = '123-456-789'
class WebhookResponse(BaseModel):
result: str
class WebhookData(BaseModel):
body: dict
app = FastAPI()
rout = APIRouter()
@app.get("/")
async def welcome() -> dict:
return { "message": 'Hello World!' }
def printLog(data):
info(f"Raw data: {data}")
@rout.post("/webhook", response_model=WebhookResponse, status_code=200)
async def webhook(
webhook_input: WebhookData,
request: Request,
response: Response,
content_length: int = Header(...),
x_hook_signature: str = Header(None)
):
if content_length > 1_000_000:
# To prevent memory allocation attacks
Logger.error(f"Content too long ({content_length})")
response.status_code = 400
return {"result": "Content too long"}
if x_hook_signature:
raw_input = await request.body()
input_hmac = hmac.new(
key=WEBHOOK_SECRET.encode(),
msg=raw_input,
digestmod="sha512"
)
if not hmac.compare_digest(
input_hmac.hexdigest(),
x_hook_signature
):
Logger.error("Invalid message signature")
response.status_code = 400
return {"result": "Invalid message signature"}
Logger.info("Message signature checked ok")
else:
Logger.info("No message signature to check")
printLog(webhook_input)
return {"result": "ok"}
app.include_router(rout)
< /code>
Curl Отпечатает следующую ошибку: < /p>
{
"detail": [
{
"loc": [
"body"
],
"msg": "value is not a valid dict",
"type": "type_error.dict"
}
]
}
< /code>
со следующей напечатанной на консоли: < /p>
INFO: 127.0.0.1:50192 - "POST /webhook/ HTTP/1.1" 422 Unprocessable Entity
Подробнее здесь: https://stackoverflow.com/questions/742 ... tity-error
Слушатель Webhook в Fastapi повышает 422 ошибку незаконной организации [дублировать] ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Fastapi повышает 422 ошибку незаконной организации при загрузке файла через почтальон
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
HTTP/1.1 422 Ошибка незаконной организации при отправке данных в Loopback от Java Client
Anonymous » » в форуме JAVA - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
FastAPI выдает ошибку 422 при попытке добавить загрузку файла [дубликат]
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-