Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 404适用于烧瓶中的所有路线 我的问题_Python_Python 3.x_Flask - Fatal编程技术网

Python 404适用于烧瓶中的所有路线 我的问题

Python 404适用于烧瓶中的所有路线 我的问题,python,python-3.x,flask,Python,Python 3.x,Flask,我的flask 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- 我的代码 我有一个类服务器,这个服务器类接收一个烧瓶应用程序,并运行它: from jsonmerge import m

我的flask 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-

我的代码 我有一个类
服务器
,这个服务器类接收一个
烧瓶应用程序
,并运行它:

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.\u 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>])
>无

我尝试将Flask ENV设置为
development
,但它无法:

self.__app.config["ENV"]='development'
它以前是如何工作的 我总是这样使用烧瓶,而且总是做得很好:

--->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')
但是现在我想用不同的方式来做,我想用我的服务器类来启动我的FlaskAPI

环境
  • Python版本:3.7.0
  • 烧瓶版本:1.0.2
  • 操作系统版本:Manjaro Linux 18.0.0-rc

所有的双下划线是怎么回事?很抱歉,我没有收到你的评论,你是说一个关于自己的应用程序吗?
get/api/ping/
但是你定义了路径
/api/ping
。后面的斜线不仅仅是装饰,它完全是路线的一部分。除非您在代码中将
/api/ping/
映射到
/api/ping
,否则它们是不同的URL.tk,它解决了我的问题,但我可以忽略它吗?因为在其他nodejs框架中(我以前是nodejs开发人员),如果JS框架喜欢拖尾斜杠,那么最简单的方法就是在路由中也使用拖尾斜杠。或者,大多数框架可以配置为不添加尾部斜杠。最后,Flask有一些配置选项可以使它自动重定向,但这个选项不是一个好主意,因为它会导致每次访问2个请求。
from app import app
if __name__ == '__main__':
    app.run(debug=True, port=9000, host='0.0.0.0')