#python #flask
#python #flask
Вопрос:
Я следил за некоторыми руководствами по сборке restful api с помощью python и flask. Изначально я столкнулся с несколькими проблемами, такими как:
Проблема 1 (я думаю, решена) Python запускает веб-сервер на виртуальной машине virtualox, прослушивающей только localhost. С тех пор я изменил сценарий для запуска специально на IP-адресе и порту хоста, чтобы он был доступен для обслуживания запросов GET из внешнего браузера.
from flask import Flask
def create_app(config_filename):
app = Flask(__name__)
app.config.from_object(config_filename)
from app import api_bp
app.register_blueprint(api_bp, url_prefix='/api')
# from models import db
# db.init_app(app)
return app
if __name__ == "__main__":
app = create_app("config")
app.run(host='192.168.56.92',port=5000,debug=True)
Проблема 2:
Я все еще получаю 404 ошибки ниже, когда выполняю curl или пытаюсь загрузить из внешнего браузера http://192.168.56.92:5000/api/Hello
* Running on http://192.168.56.92:5000/ (Press CTRL C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 339-215-805
192.168.56.1 - - [04/Nov/2020 16:57:22] "GET /api/Hello HTTP/1.1" 404 -
192.168.56.1 - - [04/Nov/2020 16:57:46] "GET /api/Hello HTTP/1.1" 404 -
Если вы, ребята, можете указать на ошибку, это будет здорово.
Спасибо
Комментарии:
1. Пожалуйста, поделитесь кодом, в котором
api_bp
определено, ошибка должна исходить оттуда
Ответ №1:
Я обнаружил проблему, и спасибо, что указали на нее, хотя и не очевидно. Проблема связана с классом ресурсов с именем Users, который импортируется в класс run.
from flask import Blueprint
from flask_restful import Api
from resources.User import User
api_bp = Blueprint('api', __name__)
api = Api(api_bp)
# Route
api.add_resource(User, '/User') ==> Problem was here.
Я исправил конечную точку, чтобы она имела верхний регистр U`, тогда как ранее было ‘/ user’. Теперь он работает.
Спасибо всем