swagger 如何在python flask(restplus)中传递URL作为GET请求的参数?

ig9co6j1  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(129)

我正在使用python flask创建一个REST API。API已经准备好了,并在我的本地主机的端口号8000上工作。现在我打算给予这个REST API一个用户友好的界面,为此我决定使用python - restplus。我想到从运行在5000上的Swagger应用程序内部调用这个服务(运行在8000上)
我能够创建API(Swagger)的基本结构。其代码如下所示:

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

app = Flask(__name__)
api = Api(app)

@api.route('/HybridComparator/<string:url2>/<string:url1>')
class HybridComparator(Resource):
    def get(self, url1, url2):
        print(url1)
        print(url2)
        return url1 + ' ' + url2

if __name__ == '__main__':
    app.run(debug=True)

整个应用程序在端口5000上无缝运行(使用随机字符串作为参数)。但是当我传递的URL是实际链接时,应用程序返回404 - Not Found的响应。经过进一步调查,我意识到罪魁祸首是我试图提供的链接中嵌入的'/'。有没有特别处理URL的方法?
我应该在发送请求之前对它们进行编码吗?(这会使我的参数看起来很丑)。我是不是漏掉了什么?

mfpqipee

mfpqipee1#

这是一个很老的问题,我相信你现在已经解决了这个问题。但对于新的搜索者来说,这可能会派上用场;
<string:url2>/<string:url1>替换为<path:url2>/<path:url1>

wgx48brx

wgx48brx2#

看来:

@api.route('/HybridComparator/<path:url2>/<path:url1>')

应该修复它,它修复了404,但我只得到“http:/”部分的参数

相关问题