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

时间:2018-02-08 21:15:37

标签: python pickle

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

我想到的选项:

元组:

(type, value)

词典:

{type:value}

类:

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

1 个答案:

答案 0 :(得分:1)

API通常似乎更喜欢使用字典的“命名参数”方法,而不是元组方法。这往往更容易在任何一端工作,并且使人为错误的可能性降低。

在不知道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)上执行此操作,则执行类似第二个操作以指示请求类型。

这些都不一定是最节省空间的解决方案。如果这是一个问题,你会使用像Protobuf这样的东西。但是许多公共Web API只使用带有这些参数名称的JSON作为键,因为这对于普通用户来说更容易。

我觉得你不在乎,因为它只是教育,但对于其他读书,你不应该在Pickle中这样做。 JSON是一种更好的方法,只要您只发送支持的数据类型(字符串,数字,列表,字符串,bool,其他几种),它在Python中同样容易。