404 для всех маршрутов в колбе - PullRequest
0 голосов
/ 17 декабря 2018

Моя проблема

Я получаю 404 для всех маршрутов, мой api флешки работает, и когда я его запускаю, api получает запрос и регистрирует его, но он дает статус 404 http для каждогозапрос;shell 127.0.0.1 - - [17/Dec/2018 16:49:12] "GET /api/ping/ HTTP/1.1" 404 - 127.0.0.1 - - [17/Dec/2018 16:50:10] "POST /api/blur/ HTTP/1.1" 404 -

Мой код

У меня есть класс Server, этот класс сервера получает Flask app и запускает его:

from jsonmerge import merge

class Server():
    def __init__(self, app):
        self.__app = app
        self.__config = #snip
        #snip

    def start(self, options=None):
        #snip

        self.__app.run(debug=self.__config["debug"], 
        port=self.__config["server"]["port"], host=self.__config["server"]["ip"])

, и у меня естьмой run.py, который запускает мою заявку:

if __name__ == '__main__':
    srv = Server(app)
    srv.start(config)

, когда я печатаю мои self.__app сведения, мой вывод:

<Flask 'appfly.app'>

<Config {'ENV': 'production', 'DEBUG': False, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': None, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': '/', 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': datetime.timedelta(seconds=43200), 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS':True, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093}>

Map([<Rule '/api/ping' (GET, HEAD, OPTIONS) -> ping>,
 <Rule '/api/blur' (POST, OPTIONS) -> blur>,
 <Rule '/static/<filename>' (GET, HEAD, OPTIONS) -> static>])

посмотрите, мой url_map перечислит все мои маршрутыесть маршрут api/ping и маршрут api/blur.

Мои решения по устранению неполадок

многие ответы в стеке потока говорят об изменении конфигурации ["имя_сервера"], но это не работает, я уже пробовалустановите SERVER_NAME на 0.0.0.0:9000,localhost:9000, 127.0.0.1:9000

Я создаю учебник по фляге для проверки SERVER_NAME, и он отсутствует

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == '__main__':
print(app.config["SERVER_NAME"])
#app.run(...)

> None

Я попытался установить Flask ENV на development, но он работает так:

self.__app.config["ENV"]='development'

как это работает до

Я всегда использовал Flask таким образом ивсегда работал нормально:

---> app.py

from flask import Flask

app = Flask(__name__)

# Routes files
from app.presentation.routes import ping
from app.presentation.routes import rg as rg_scan

# Routes rules
app.add_url_rule('/api/ping', 'Ping', ping.route, methods=['GET'])
app.add_url_rule('/api/rg', 'RG', rg_scan.route, methods=['POST'])
print('API is running...')

---> run.py

from app import app
if __name__ == '__main__':
    app.run(debug=True, port=9000, host='0.0.0.0')

но теперь я хочу сделать это вПо-другому, я хочу использовать свой класс сервера, чтобы запустить API фляги.

Среда

  • Версия Python: 3.7.0
  • Версия Flask: 1.0.2
  • Версия ОС: Manjaro Linux 18.0.0-rc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...