2

ロバストネス原則自分の行動を保守的にし、他の人から受け入れることを寛大にする)をAPIに適用する必要がありますか?

例として、 limitなどのユーザーパラメータを次の2つの方法のいずれかで処理するAPIを見てきました。

limitが返される結果の最大数である場合、ユーザーがlimitに文字「x」を入力すると、入力が数値ではなかったために一部のAPIが検証エラーをスローし、他のAPIは単にデフォルトの制限にフォールバックします(例: 1000)。

そのようなユーザー入力を処理する方法に関して、あなたは何をお勧めしますか?有用で説明的な検証エラーをスローしますか、それとも入力を適切にサニタイズしてリクエストを続行しますか?

4

1 に答える 1

1

何をしようとしているのかを明確に文書化する限り、どちらの方法でも大きな違いはありません。このような状況での動作は、特定のフィールドとデータの種類に大きく依存します。たとえば、数値のデフォルトを1000のような数値にすることができますが、無効なタイムスタンプを使用するとどうなりますか?

制限値については、デフォルト(まったく含まれていない場合に使用する値)に低下しますが、各フィールドでAPIがどのように動作するか(必須かどうか、デフォルト値など)を明確に文書化する必要があります。 。明確に文書化されている場合、ユーザーはどちらの方法でも適切に使用できるようになります(すべきです)。

于 2013-02-15T20:05:36.443 に答える