Web APIはスペルミス/余分なパラメーターをどのように処理する必要がありますか?


8

質問:一般向けのWeb API(HTTP Get / Postリクエストを送信し、JSON / XMLデータを取得する)の場合、スペルが間違っているか余分なパラメーターをどのように処理する必要がありますか?

正しくないパラメーターが無視された場合、呼び出し元のコードのエラーは、有効な結果を返すため、気付かれないように思えます。これは、返された結果を見ても明らかではない状況で特に当てはまる可能性があります。

オプションのパラメーターのみを参照しています。明らかに、必須パラメーターのスペルが間違っている場合、パラメーターは欠落していると見なされ、エラーが返されます。


例としてPlace Search API呼び出しには4つの必須パラメーター(位置、半径、センサー、キー)といくつかのオプションパラメーター(タイプはそのうちの1つ)があります。

これらのコマンドを(APIキーを使用して)実行し、有効な結果を取得できます。

curl "https://maps.googleapis.com/maps/api/place/search/json?location=45.47554,-122.794189&radius=500&sensor=false&key=<api_key>&type=bakery"

curl "https://maps.googleapis.com/maps/api/place/search/json?location=45.47554,-122.794189&radius=500&sensor=false&key=<api_key>&types=bakery"

最初のコマンドには、「types」パラメーターが単数形であり、これは無効なキー名です。APIはそのパラメーターを無視し、すべてのタイプのエンティティを返します。この場合、エラーは明白ですが、発生しない場合(および他のAPI呼び出し)がある場合があります。

回答:


3

余分なパラメータを無視するのが標準的な方法です。このようなコードを書くのは簡単です

if (params.type) { 
  ... 
}

渡されたすべてのパラメーターをチェックして、無効なパラメーターがないかどうかを確認するのは問題になりません。スペルミスはクライアントの問題です。


1

パラメータ名のスペルミステストを含めるのが少しの努力であった場合(どのくらいの作業を行い、すべてのパラメータの名前をスペルミスの可能性が高いリストと照合して確認しますか?)、私はそれを行うかもしれませんが、通常はスペルミスのある余分なパラメーターを無視することをお勧めします。もちろん、WebServiceが「有効なパラメーターがありません。typeもしかしてtypesですか?」というメッセージを返すとよいでしょう。しかし、それを適切に実装する時間があり、通常はそのタイプのメッセージが返されることを期待していないので、そこにない場合でも見逃すことはありません。


1

それは、APIがどのように仕様化されているか、およびこれらの問題に対して誰が責任を負うかにかかっていると思います。APIを設計する場合、予想される正しいパラメーター(および関連する値がある場合)が予期した方法で処理されたか、または予期しない入力があった場合(メソッドを奇妙な方法から保護するために必要な場合)、所有権を確認します奇抜なデータ)その後、適切な例外がスローされたか、エラーコードが返されました。

次に、予想されるパラメータリストに含まれていないすべての入力は、APIの問題の一部ではないと言います。これにより、具体的に定義し、非常に明確な仕様と、適切に使用することを保証する責任を負う使用を希望するすべての仕様の所有権を取得できます。

ツールとその使用方法に関する一連の指示を提供しました。正しく使用するのはユーザーの責任です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.