Как настроить basepath в приложении flask restful api? - PullRequest
0 голосов
/ 20 января 2020

Я хочу установить базовый путь для моего flask приложения. Я упомянул один пример ниже.

basepath = 'http://localhost:3000/api'

У меня есть два вызова API, один - GET, а другой - POST.

from flask import Flask
from flask_restful import Api
app = Flask(__name__)
api = Api(app)

api.add_resource(CreateUser, "/v1/user/create/")
api.add_resource(CreateUser, "/v1/user/details")

class CreateUser(Resource):
    def post(self):
       # Code for creating a user
    def get(self):
       # Code for get the details of user.

Итак, если я хочу создайте пользователя, тогда мой URL будет http://localhost:3000/api/v1/user/create/ таким же для GET. Так как мне этого добиться?

1 Ответ

0 голосов
/ 20 января 2020

Инициализируйте ваш API с префиксом пути:

from flask import Flask
from flask_restful import Api
app = Flask(__name__)
api = Api(app, "/api")

...

Вы не можете изменить хост и порт таким образом, вам придется запустить flask с параметрами:

flask run --host=127.0.0.1 --port=3000

Или вы можете сделать

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app, "/api")


...

if __name__ == "__main__":
    app.run(host="127.0.0.1", port="3000")

Имейте в виду, что это не предназначено для производственных сред, только для локального тестирования. Пожалуйста, смотрите https://flask.palletsprojects.com/en/1.1.x/tutorial/deploy/ для использования в производственной среде.

Если вы хотите получить эти значения из basepath, один из вариантов будет purl:

url = purl.URL('http://localhost:3000/api')
url.host()  # --> "localhost"
url.port()  # --> 3000
url.path()  # --> "/api"
...