使用 pickle 传输类型和值的最佳方式

Best way to transfer type and value using pickle

我有类型和值参数,我想使用 pickle 从客户端发送到服务器。我想知道什么是最好的、最传统的方法(数据应该从客户端发送到服务器)。

我想到的方案:

元组:

(type, value)

词典:

{type:value}

class:

class request(object):
    def __init__(self, request_type, value):
        self.typ = request_type
        self.value = value

API 通常似乎更喜欢使用字典的 "named parameter" 方法,而不是元组方法。这往往更容易在任一端工作,并减少人为错误的可能性。

不知道 type 到底是什么,有几个选项:

{ type: value } # if type is a parameter name
{ "request": type, "parameter_name": value } # if type is a request type, and you've got one or more values with parameter names

只有在请求类型以其他方式指明的情况下,您才会执行第一个。就像这是通过 HTTP 一样,您可以使用 URL 端点来表示,例如“http://my_server/login”用于登录请求。如果您直接在 L4 之上(例如 TCP)执行此操作,则可以执行类似第二个的操作来指示请求类型。

这些都不一定是最 space 最有效的解决方案。如果你担心的话,你会使用像 Protobuf 这样的东西。但是许多 public Web API 只使用 JSON 并将这些参数名称作为键,因为这对一般用户来说更容易。

我看你不在乎,因为它只是教育性的,但对于其他阅读者,你不应该在 Pickle 中这样做。 JSON 将是一种更好的方法,并且在 Python 中同样容易,只要您只发送支持的数据类型(字符串、数字、列表、字典、布尔值等)。