解析GET参数

问题描述 投票:0回答:1

我有一个

REST API
网址看起来像这样:

class RRervice(pyrestful.rest.RestHandler):
      @get('/Indicator/{rparms}')
      def RR(self, rparms):

        print(rparms)       
        
        ...

所以当这段代码在这个 URL 上执行时:

http://ip:3000/Indicator/thresh=.8&symbol=AAPL

print
我得到了我应该得到的:

thresh=.8&symbol=AAPL

我的问题是,是否有一个 API 可以确保某些参数必须存在,如果有,解析它们的最佳方式是什么?我看过

urllib
,甚至
argparse
。我想我正在寻找正确的方法来做到这一点。我知道我可以通过
split
破解它,但这只是解决获取 URL 中键入的内容,而不是 URL 参数的正确性。

python rest urllib argparse url-parameters
1个回答
1
投票

由于您已经收到与不带问号的查询字符串相对应的 URL 的确切部分,如果您想本地解析它(即不使用您正在使用的框架),您可以使用

parse_qs
来自urllib.parse:

from urllib.parse import parse_qs

...

class RRervice(pyrestful.rest.RestHandler):
      @get('/Indicator/{rparms}')
      def RR(self, rparms):
            pparams = parse_qs(rparms)
            print(pparams.get("thresh"))       
            print(pparams.get("symbol"))       
        ...

为了强制执行它,您可以检查

pparams.get(param_name)
是否为None,像这样:

if(pparams.get("thresh") is None):
   "Return your error to the client somehow"
© www.soinside.com 2019 - 2024. All rights reserved.