尽管有正确的 HTTP 端点,我还是收到了 405 HTTP 错误

问题描述 投票:0回答:1

我正在制作一个 REST API 来将日历日期存储在 Flask 中。尽管有 POST 端点,但在使用 fetch 时收到 405 错误。

这是 HTTP 错误:

"POST /MichelScott123/calendar/data HTTP/1.1" 405 -

Javascript 获取请求。

document.getElementById('submit').addEventListener('click', () =>{
    var title = document.getElementById('titleInput');
    var startDate = document.getElementById('startDateInput');
    var startTime = document.getElementById('startTimeInput');
    var endDate = document.getElementById('endDateInput');
    var endTime = document.getElementById('endTimeInput');
    var frequency = document.getElementById('frequencySelect');
    
    console.log(startTime.value)

    fetch(`/${username}/calendar/data`, {
      method: 'POST',
      headers: {'Content-Type': 'application/json'},
      body: JSON.stringify({
        title: title.value,
        startDate: startDate.value,
        startTime: startTime.value,
        endDate: endDate.value,
        endTime: endTime.value,
        frequency: frequency.value
      }),
    })
  })

Flask REST API

@api.route('<username>/calendar/data')
def events(username):
    if request.method == 'GET':
        #THIS GET REQUEST IS WORKING FINE SO I WON'T INCLUDE THE CODE

    #POST
    if request.method == 'POST':
        data = request.get_json()
        print(data)
        admin = Admin.query.filter_by(username=username).first()

        startDateParsed = data.get('startDate').split('-')
        endDateParsed = data.get('endDate').split('-')
        startDate = datetime(year=int(startDateParsed[0]), month=int(startDateParsed[1]), day=int(startDateParsed[2]))
        endDate = datetime(year=int(endDateParsed[0]), month=int(endDateParsed[1]), day=int(endDateParsed[2]))

        startTimeParsed = data.get('startTime').split(':')
        endTimeParsed = data.get('endTime').split(':')
        startTime = time(hour=startTimeParsed[0], minute=startTimeParsed[1])
        endTime = time(hour=endTimeParsed[0], minute=endTimeParsed[1])

        new_event = CalendarDates(title=data.get('title'), startDate=startDate, startTime=startTime, endDate=endDate, endTime=endTime, frequency=data.get('frequency'), admin_id=admin.id)
        db.session.add(new_event)
        db.session.commit()

        return '', 200

如果您需要更多代码,请评论。为了简洁起见,我没有包含整个 js 和 py 文件。感谢您的帮助。

rest flask fetch-api http-error http-status-code-405
1个回答
0
投票

发现我的错误,我忘记将正确的方法添加到我的路线中。

@api.route('<username>/calendar/data', methods=['GET', 'POST', 'PUT', 'DELETE'])

© www.soinside.com 2019 - 2024. All rights reserved.