简体   繁体   English

如何在flask restful api应用程序中配置basepath?

[英]How to configure basepath in flask restful api application?

I want to set a basepath for my flask application.我想为我的烧瓶应用程序设置一个基本路径。 I have mentioned one example below.我在下面提到了一个例子。

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

i have two api call one is GET and other one is POST .我有两个 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.

So here, if i want to create the user then my url will be http://localhost:3000/api/v1/user/create/ so same for GET also .所以在这里,如果我想创建用户,那么我的 url 将是http://localhost:3000/api/v1/user/create/ GET也是如此。 So how do i achieve this ?那么我如何实现这一目标?

Initialize your Api with the path prefix:使用路径前缀初始化您的 Api:

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

...

You can't change the host and port this way, you'll have to run flask with parameters:您不能以这种方式更改主机和端口,您必须使用参数运行烧瓶:

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

Or you could do或者你可以做

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")

Please keep in mind this is not intended for production environments, only for local testing.请记住,这不适用于生产环境,仅用于本地测试。 Please see https://flask.palletsprojects.com/en/1.1.x/tutorial/deploy/ for using in a production environment.在生产环境中使用请参见https://flask.palletsprojects.com/en/1.1.x/tutorial/deploy/

If you want to get those values from basepath , one option would be purl :如果您想从basepath获取这些值,一种选择是purl

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM