Запрос PUT возвращает ошибку с флягой

0

Я использую Flask в приложении API, и у меня есть эта функция:

@app.route('/v1/myapi/editperson/<int:id_person>)', methods=['PUT'])
def edit_person(person_id):

    req_data = request.get_json()
    firstname = req_data.get('firstname')
    lastname = req_data.get('lastname')
    session.query(model.Persons).filter(model.Persons.id==person_id).update( firstname, lastname)
    session.commit()
    session.close()     
    return jsonify(req_data)

Когда я выполняю этот запрос на завивание:

 curl -i -H "Content-Type: application/json" -X PUT -d '{"firstname": "myfirstname", "lastname": "mylastname"}' http://localhost:5000/v1/myapi/editperson/38

Я получаю эту ошибку:

HTTP/1.0 404 NOT FOUND
Content-Type: application/json
Content-Length: 27
Server: Werkzeug/0.14.1 Python/2.7.6
Date: Wed, 04 Jul 2018 07:17:09 GMT
Proxy-Connection: keep-alive
Connection: keep-alive

{
  "error": "Not found"
}

У меня есть строка в базе данных с id = 38, поэтому я не знаю, почему запрос ее не находит. Я использую SQLAlchemy для запроса базы данных.

Любые подсказки?

  • 0
    Вы делаете POST через curl, и метод определен как PUT.
  • 0
    Я редактировал мой вопрос, но PUT выдает тот же результат: 404 не найдено
Теги:
curl
flask
flask-sqlalchemy

3 ответа

4
Лучший ответ

Действительно PUT/POST, но также:

@app.route('/v1/myapi/editperson/<int:id_person>)', methods=['PUT'])

против

@app.route('/v1/myapi/editperson/<int:id_person>', methods=['PUT'])
0

Ваш маршрут проходит id_person, но в вашем запросе используется person_id

0

В аннотации указано, что этот API просто разрешает метод PUT. Но вы запрашиваете этот API через метод POST. Пытаться:

curl -X PUT ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню