我想要使用pickle从客户端发送到服务器的类型和值参数。我想知道什么是最好的,最常规的方法(数据应该从客户端发送到服务器)。
我想到的选项:
元组:
(type, value)
词典:
{type:value}
类:
class request(object):
def __init__(self, request_type, value):
self.typ = request_type
self.value = value
答案 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中同样容易。