Как перейти с API на доменное имя в Flask-restplus API? - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь переслать мой api колбы на mydomain.example с конечной точкой api.mydomain.example

Например, мой метод ping будет иметь конечную точку api.mydomain.example/v1/server/ping.Однако, я получаю xx.xxx.xxx.xx:5005/v1/server/ping в качестве конечной точки.

Глядя на другие вопросы здесь, в SO, я нашел предложения изменить app.config['SERVER_NAME'] или добавить subdomain в route декоратор.Но ничего не работает.(Я получаю ошибку 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 переходит на страницу администрирования Swagger, но mydomain.example/v1/server/ping также переходит на страницу администрирования Swagger.

Но, тем не менее, я получаю xx.xxx.xxx.xx: 5005 в разделе URL запроса.

Как мне заставить его работать с именем субдомена?

1 Ответ

0 голосов
/ 25 мая 2018

Вам не нужно менять конфигурацию вашего приложения. Вам нужно запустить приложение на сервере WSGI, который будет проксировать ваше приложение (например, на 80-м порту) через веб-серверы, такие как Apache и Nginx. Серверу WSGI требуется точка входа для связи с вашим приложением по указанному вами порту (5005 в вашем фрагменте кода). Вот довольно простое руководство по этому вопросу (для более подробной информации, вы также можете обратиться к этой ссылке).

Кроме того, API-шлюзы - ваши лучшие друзья, особенно если вы публикуете свои API в общедоступном Интернете. Вы можете посмотреть AWS API Gateway или Apigee для управления API с первоклассной поддержкой Swagger (есть много других - включая OSS).

...