0

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

示例 URL 请求:

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传递给资源的字典,我应该检查为资源传递的参数:

  • 检查是否传递了所需的参数(如果未传递,可能会引发异常)
  • 检查它们的类型(str、list、int、bool)

还是我应该保持简单并使函数将传递给它的任何内容发送到资源?

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

# 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'}

那么应该走什么路呢?

4

1 回答 1

2

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

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

于 2013-11-03T22:38:28.963 回答