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 であっても、クライアントはそうではなく、アーキテクチャの利点を活用することはできません。

クライアント側のパラメーターをチェックしないでください。それよりも、サーバーから返されたエラーを慎重に処理する必要があります。理想的には、1 つまたは複数のパラメーターが不適切または欠落している場合は詳細に説明する必要があります。

于 2013-11-03T22:38:28.963 に答える