首页 文章

如何在Flask-restplus API中从API更改为域名?

提问于
浏览
2

我试图将我的烧瓶api转发到 mydomain.example ,终点是 api.mydomain.example

例如,我的方法 ping 将有一个终点 api.mydomain.example/v1/server/ping . 但是,我得到的是 xx.xxx.xxx.xx:5005/v1/server/ping 作为 endpoints .

在SO中查看其他问题我找到了修改 app.config['SERVER_NAME'] 或将 subdomain 添加到 route decorator的建议 . 但没有任何作用 . (当我进行任何这些修改时,我收到404错误) .

这是一个最小的工作示例:

from flask import Flask, Blueprint
from flask_restplus import Resource, Api

app = Flask(__name__)
api = Api(app, version='1.0',
          title='My API',
          description='An API')

blueprint = Blueprint('api', __name__, url_prefix='/v1')
api.init_app(blueprint)
app.register_blueprint(blueprint)
#app.config['SERVER_NAME'] = 'mydomain.example:5005'
#app.url_map.default_subdomain = "test"

server = api.namespace("server",
                   description='Server API')


@server.route("/ping") #, subdomain="test")
class Ping(Resource):
    def get(self):
        """
        Check if Server is still alive
        """
        return {"reply":"PONG"}

if __name__ == '__main__':
    app.config["SWAGGER_UI_DOC_EXPANSION"] = "list"
    app.run(port=5005, host= '0.0.0.0', debug=True)

我去了我的域管理页面( name.com )并添加了url . 在这种情况下, mydomain.info 进入招摇管理页面,但 mydomain.example/v1/server/ping 也进入招摇管理页面 .

但是,我仍然在请求URL部分中获得xx.xxx.xxx.xx:5005 .

如何使其与子域名一起使用?

1 回答

  • 0

    您无需更改应用配置 . 您需要做的是在WSGI服务器上运行您的应用程序,该服务器将通过Apache和Nginx等Web服务器代理您的应用程序(例如,在端口80上) . WSGI服务器需要一个入口点,以便在您指定的端口上与您的应用程序进行通信(代码段中为5005) . Here's一个相当简单的教程(更多细节,你也可以参考this链接) .

    此外,API网关是您最好的朋友,特别是如果您将API发布到公共互联网上 . 您可以通过对Swagger的一流支持来查看AWS API GatewayApigee以进行API管理(还有许多其他 - 包括OSS) .

相关问题