API客户端设计,我应该查看参数吗?

时间:2013-11-03 15:21:46

标签: python api rest

我想为RESTful API服务创建一个Python API包装器,我正在考虑如何设计它。

示例网址请求:

https://www.api.com/collection/resource.json?userid=id&password=pass&command=value

我将把每个集合作为模块和资源作为这些模块中的函数,例如,这里是我将如何使用api:

from apiname import collection

# params is a dict of the parameters sent to this resource
params = {
    'userid': '123456',
    'password': 'pass',
    'command': 'value'
}

collection.resource(params)

我的主要问题是关于传递给资源的params dict,我应该检查为资源传递的参数:

  • 检查是否传递了必需的参数(如果未通过则可能引发异常)
  • 检查他们的类型(str,list,int,bool)

或者我应该保持简单并让函数发送任何传递给它的资源吗?

如果我应该检查参数,建议的方法是什么,我想保留为每个资源保存的所有默认参数,然后用这个默认的dict检查所有传递的参数,例如:

# this is the dict holding the info about all the parameters
defaults = {}

defaults['userid'] = {'type': str, 'required': True, 'default': None}
defaults['password'] = {'type': str, 'required': True, 'default': None}
defaults['command'] = {'type': list, 'required': False, 'default': 'some-value'}

那么应该遵循什么样的路径呢?

1 个答案:

答案 0 :(得分:1)

如果检查客户端的参数,您将在当前客户端和服务器实现之间创建强耦合。如果服务器更改了某些资源所接受的参数或值,则可能会破坏客户端和需求更改。这在REST中确实是不受欢迎的。即使API确实是RESTful,您的客户也不会,并且您不会利用架构的好处。

您不应该检查客户端的参数。而不是那样,你应该仔细对待服务器返回的错误。理想情况下,他们应详细说明一个或多个参数是否不足或缺失。