Python 具有多个查询参数的Flask api端点

Python 具有多个查询参数的Flask api端点,python,flask,flask-restful,Python,Flask,Flask Restful,我肯定这个问题可能有重复的地方,但我不知道什么是正确的措辞是我的问题 我有我想要到达的端点,我对它们运行了curl命令: curl http://0.0.0.0:5001/job/task/?job_type=medicine&task_type=research curl http://0.0.0.0:5001/job/task/?job_type=medicine&task_type=research&job_id=123 我在这两方面都会遇到以下错误: <t

我肯定这个问题可能有重复的地方,但我不知道什么是正确的措辞是我的问题

我有我想要到达的端点,我对它们运行了
curl
命令:

curl http://0.0.0.0:5001/job/task/?job_type=medicine&task_type=research
curl http://0.0.0.0:5001/job/task/?job_type=medicine&task_type=research&job_id=123
我在这两方面都会遇到以下错误:

<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.</p>
如何修复错误?

您的烧瓶路径

api.add_resource(Test, '/job/task/?<string:job_type>&<string:task_type>', '/job/task/?<string:job_type>&<string:task_type>&<int:job_id>')

不是

这将导致端点未找到错误

解决方案

您可以使用
request.args
()

所以,您的url定义应该是

api.add_resource(Test, '/job/task/')
在你看来

from flask import request
.....

    def get(self):
        job_type = request.args.get("job_type")
        task_type = request.args.get("task_type")
        task_id = request.args.get("task_id")

        if not task_id:
            return {"job_type":job_type,"task_type":task_type}
        return {"job_type":job_type,"task_type":task_type,"job_id":job_id}
其他解决方案

  • 使用封送员
  • 使用reqparse
  • /job/task/?job_type=xxx&task_type=yyy
    
    api.add_resource(Test, '/job/task/')
    
    from flask import request
    .....
    
        def get(self):
            job_type = request.args.get("job_type")
            task_type = request.args.get("task_type")
            task_id = request.args.get("task_id")
    
            if not task_id:
                return {"job_type":job_type,"task_type":task_type}
            return {"job_type":job_type,"task_type":task_type,"job_id":job_id}