当前位置: 首页 > 面试题库 >

从BaseHTTPHandler解析http GET和POST参数?

王俊楚
2023-03-14
问题内容

BaseHTTPServer模块中的BaseHTTPHandler似乎没有提供任何方便的方法来访问http请求参数。从路径解析GET参数和从请求正文解析POST参数的最佳方法是什么?

现在,我正在将它用于GET:

def do_GET(self):
    parsed_path = urlparse.urlparse(self.path)
    try:
        params = dict([p.split('=') for p in parsed_path[4].split('&')])
    except:
        params = {}

这适用于大多数情况,但是我想要更强大的功能,可以正确处理编码和类似空参数的情况。理想情况下,我想要的是小型独立的产品,而不是完整的Web框架。


问题答案:

您可以尝试使用Werkzeug模块,基本的Werkzeug库不是太大,如果需要,您只需提取这段代码即可完成。

url_decode方法返回一个MultiDict并具有编码支持:)

与该urlparse.parse_qs方法相反,Werkzeug版本负责:

  • 编码方式
  • 多个值
  • 排序

如果不需要这些(或者在编码的情况下,请使用Python 3),则可以随意使用内置解决方案。



 类似资料:
  • 问题内容: 由于某种原因,我无法弄清楚为什么Django无法正确处理我的内容。 它以格式发送,查看开发工具中的选项卡将其显示为请求有效负载: 这正是我希望将其发送到我的API的方式。 在Django中,我有一个接受此请求作为参数的视图,仅出于测试目的,应将其打印到控制台。 当然,什么都没有打印出来,但是当我打印时我得到了: 所以我知道我 确实 有尸体被寄出。 我尝试也无济于事。设置该变量后打印也不

  • 问题内容: 由于某种原因,我无法弄清楚为什么Django无法正确处理我的内容。 它以JSON格式发送,查看Network开发工具中的选项卡将其显示为请求有效负载: 这正是我希望将其发送到我的API的方式。 在Django中,我有一个接受此请求作为参数的视图,仅出于测试目的,应将其打印到控制台。 当然,什么都没有打印出来,但是当我打印时request.body我得到了: 所以我知道我确实有尸体被寄出

  • 问题内容: 我需要用JSP做一些小任务;对JSP而言,我是一个非常新的人,我想知道是否有可能从HTTP请求中仅 获取GET 或 POST 参数。 我已经看到了ServletRequest.getParameter(等等),但是这些方法似乎同时具有GET 和 POST参数。是否有一种方法可以只获取其中一个,而无需自己解析URL或请求正文?如果不是,是否存在优先值规则覆盖哪些值(例如POST参数始终覆

  • 我只是复制了的所有jar文件,但是不能导入所有这些jar文件,它给出一个错误:。

  • 我试图向服务器发出POST请求,但我遇到了一个问题。服务器似乎收到了请求,但我仍然在控制台中看到一个错误,建议将主体从Object更改为JSON 错误:SyntaxError:JSON中位于JSON位置0处的意外标记A。在XMLHttpRequest处解析()。装载(http://localhost:4200/vendor.js:69142:51)text:“它是用id=:23保存的新用户”pro

  • 问题内容: 我正在开发一个用于为Selenium测试框架构建通用菜单的框架,并且我一直在使用Guava TypeToken来解析通用参数的类型,但是现在我遇到了一个问题,其中类型令牌无法解析参数: 我有一个生成菜单选项的构建器基础: 这是建造者的具体做法: 我有一个菜单基础,它具有一种返回菜单选项列表的方法: 我有一个具体的菜单是它: 我曾期望in 中的变量可以解析为通用类型参数的名称,而不是其运