如何将python变量编码为URL和Web服务器响应?

罗曼

假设我有一个Python函数,该函数接受多个参数作为输入并返回输出。

现在,我想有一个基于此功能的“ Web服务”(API)。这意味着应该有一个可以使用某些参数调用的URL,该参数应该传递给函数,函数接受它们并计算相应的结果(输出),然后将其传递回Web服务器。反过来,将结果显示给用户(可能是另一个程序)。

如果一个简单的函数接受两个实值参数(例如xy)并返回一个实值结果,则可以将函数的调用组织为throw get参数。例如:

www.my_web_site.org/my_func_name?x=1.234&y=3.456

结果,我期望一个仅包含一个实数的网页。

但是,对于我来说,使用更复杂的输入应该怎么做并不是很明显。假设作为某些参数的值,我们可以具有列表和字典。我应该如何在URL中对它们进行编码。我可以想象这样的事情:

www.my_web_site.org/my_func_name?x=[1,2,3,4]&y={1:'a',2:'b'}

但是,我不确定这是否是一个优雅的解决方案。有什么标准怎么做?也许我应该使用XML或JSON对输入进行编码。

相同的问题适用于输出。假设我们可以有字典或列表,甚至可以有一个集合作为输出。我应该如何代表它。我应该只使用str(output)还是有另一个“标准”解决方案?

盗贼大师

我应该使用str(output)吗?

不!首先,您需要使用,repr()因为它为许多内置的Python类型返回有效的Python代码。但是,要解析该输出,您需要以某种方式执行它。尽管Python具有ast.literal_eval()可以在不受信任的输入上运行的安全性(它只能处理字符串,数字,元组,列表,字典,布尔值和None),但它仍然不是很可移植,并且很难传递Python数据代码。


最好的解决方案是使用JSON对其进行编码您可以使用json.dumps序列化和json.loads序列化来实现。

  • 它几乎可以用每种语言进行解析,因此,即使您要从其他工具发送请求,也可以轻松创建参数
  • 它是一种标准格式,也很容易被人阅读。
  • 对不信任的数据进行反序列化是安全的(反序列化时,您无法编写成为大量内存的JSON的JSON,并且您无法像使用pickle那样执行任意代码
  • 它不会像XML那样增加大量的膨胀/窃听。

但是,在发送JSON有效负载时,我会使用POST而不是GET(即使对JSON数据进行URL编码是安全的-但在URL中包含一长串JSON并不是那么好)。这样,您可以简单地将整个JSON结构转储到请求正文中,使用application/jsonContent-type,并且在后端,您甚至可以轻松访问它,例如,request.get_json()如果您使用的是Flask。

如果需要支持JSON本身不支持的变量类型,则可以简单地将JSON编码器/解码器子类化,并将此类转换为所需的任何符号,例如datetime对象的ISO日期字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将python变量编码为URL和Web服务器响应?

来自分类Dev

如何将CORS标头设置为内部服务器错误响应?

来自分类Dev

如何将响应作为 URL 从服务器检索到客户端

来自分类Dev

如何将SSRS服务器配置为仅发送报告服务器URL?

来自分类Dev

如何将响应保存在Web服务的变量中

来自分类Dev

如何将龙卷风同时用作套接字服务器和Web服务器?

来自分类Dev

如何将文件放置在Web服务器上?

来自分类Dev

如何将注销URL传递到服务器

来自分类Dev

如何将变量从本地服务器传递到远程服务器?

来自分类Dev

如何将变量从本地服务器传递到远程服务器?

来自分类Dev

Python-如何将命令发送到Web服务器

来自分类Dev

Python-如何将命令发送到Web服务器

来自分类Dev

Android如何使用身份验证用户名和密码从以下URL从Web服务器获取响应

来自分类Dev

如何将服务器响应发送给客户端?(Python套接字)

来自分类Dev

如何将从服务器接收的图像URL存储到angular js和ionic中的变量

来自分类Dev

如何将一台上网本设置为接入点(DHCP)和HTTP服务器?

来自分类Dev

如何将服务器响应作为HTML呈现到弹出窗口中?jQuery的

来自分类Dev

如何将服务器响应日期转换为本地时区?

来自分类Dev

如何将数据发布到节点服务器并从中获取响应文本?

来自分类Dev

如何将 blob(来自服务器的响应)插入 ngx-extended-pdf-viewer?

来自分类Dev

如何将cURL响应编码为JSON对象?

来自分类Dev

如何将cURL响应编码为JSON对象?

来自分类Dev

如何将Linux服务器设置为路由器

来自分类Dev

如何将Linux服务器设置为路由器

来自分类Dev

Python Web服务器UTF8编码

来自分类Dev

Abyss Web服务器和Python

来自分类Dev

python中的Web服务器,用于响应GET和POST

来自分类Dev

如何将解析服务器安装URL更改为主根URL“ /”

来自分类Dev

Angular:如何将$ scope变量传递到Node.js服务器。

Related 相关文章

  1. 1

    如何将python变量编码为URL和Web服务器响应?

  2. 2

    如何将CORS标头设置为内部服务器错误响应?

  3. 3

    如何将响应作为 URL 从服务器检索到客户端

  4. 4

    如何将SSRS服务器配置为仅发送报告服务器URL?

  5. 5

    如何将响应保存在Web服务的变量中

  6. 6

    如何将龙卷风同时用作套接字服务器和Web服务器?

  7. 7

    如何将文件放置在Web服务器上?

  8. 8

    如何将注销URL传递到服务器

  9. 9

    如何将变量从本地服务器传递到远程服务器?

  10. 10

    如何将变量从本地服务器传递到远程服务器?

  11. 11

    Python-如何将命令发送到Web服务器

  12. 12

    Python-如何将命令发送到Web服务器

  13. 13

    Android如何使用身份验证用户名和密码从以下URL从Web服务器获取响应

  14. 14

    如何将服务器响应发送给客户端?(Python套接字)

  15. 15

    如何将从服务器接收的图像URL存储到angular js和ionic中的变量

  16. 16

    如何将一台上网本设置为接入点(DHCP)和HTTP服务器?

  17. 17

    如何将服务器响应作为HTML呈现到弹出窗口中?jQuery的

  18. 18

    如何将服务器响应日期转换为本地时区?

  19. 19

    如何将数据发布到节点服务器并从中获取响应文本?

  20. 20

    如何将 blob(来自服务器的响应)插入 ngx-extended-pdf-viewer?

  21. 21

    如何将cURL响应编码为JSON对象?

  22. 22

    如何将cURL响应编码为JSON对象?

  23. 23

    如何将Linux服务器设置为路由器

  24. 24

    如何将Linux服务器设置为路由器

  25. 25

    Python Web服务器UTF8编码

  26. 26

    Abyss Web服务器和Python

  27. 27

    python中的Web服务器,用于响应GET和POST

  28. 28

    如何将解析服务器安装URL更改为主根URL“ /”

  29. 29

    Angular:如何将$ scope变量传递到Node.js服务器。

热门标签

归档