HTTP Error 405 Method Not Allowed
Я создаю сервер для получения уведомлений о новых видео с помощью Youtube PubSubHubBub. Я использую fast_api в связке с uvicorn (и ngrok). Когда я получаю запрос /GET, все работает нормально, но когда дело доходит до запроса /POST, получается ошибка 405 Method not allowed. Вот мой код:
import uvicorn
from fastapi import FastAPI, Request, Response
from fastapi.middleware.cors import CORSMiddleware
from urllib.parse import parse_qs
import os
import asyncio
import ngrok
ngrok.set_auth_token('my_ngrok_token')
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=['*'],
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*'],
)
@app.get("/")
async def read_root():
return 'pong'
@app.get("/feed")
async def feed(request: Request):
if request.method == 'POST':
print(request.body())
print(data)
return Response(status_code=204, content='', media_type='text/plain')
q_params = parse_qs(request.url.query, keep_blank_values=True)
d = dict((k, v if len(v) > 1 else v[0])
for k, v in q_params.items())
if 'hub.challenge' in d.keys():
return Response(content=d['hub.challenge'], status_code=200, media_type='text/plain')
if os.name == "nt": # windows
async def setup():
listener = await ngrok.default()
listener.forward('localhost:5000')
print(listener.url() + '/feed')
asyncio.run(setup())
uvicorn.run(app=app, port=5000)
exit()