6

私はRESTAPIの開発を支援するためにいくつかの調査を行っていますが、これは私がどこにも深く議論されていないトピックの1つです。

システムにユーザーがいる場合は、数値識別子を使用してユーザーを識別する方がよいですか?

/ users / 1

または文字列識別子を使用しますか?

/ users / RSmith

それぞれのアプローチに対する仮想的な長所と短所を見ることができます。文字列識別子は人間が読みやすく、発見しにくく(有効なユーザーを見つけるためにインクリメントすることはできません)、データベースに別の数値IDを保存する必要はありません(私はしませんAPIを介してデータベースIDを公開したい)。数値識別子には固有の意味がないため、不変であることが保証されますが、文字列IDを使用すると、ユーザーはリソースの名前を変更してリソースURIを変更できます。

ここにRESTのベストプラクティスはありますか、それともシステムごとにベストアプローチが異なりますか?後者の場合、各方法に関連する追加の長所と短所はありますか?

4

2 に答える 2

4

ご存知のように、厳密に言えば、両方のアプローチの間に利点はありません。はい、文字列の識別は人々が覚えやすいかもしれませんが、それを除けば、ほとんどの場合URLはハイパーリンクをたどるプログラムによってアクセスされるため、RESTは「きれいな」URL(またはID)を強制しません。

したがって、人間にわかりやすいURLは、人間が記憶している可能性のあるリソースをブートストラップするためにのみ使用する必要があります。また、IDの推測は、次のいずれかの理由で問題になることはありません。

  1. 認証方法に基づいてURLへのアクセスを制限する必要があります。または:
  2. 「公開」されていないランダム化された/使用できないURLを使用する必要があります。

では、どちらを使用しますか?IDは直接アクセスされないため、ほとんどの場合、問題はありません。何らかの理由で人々が自分のURLを覚えていることを確認する必要がある場合は、人に優しいものにするようにしてください。ただし、推測されたURLでも許可されていない場所にアクセスできないように、リソース名の変更を避け、他の認証手段を適用してください。

于 2012-06-05T19:47:39.290 に答える
1

これの唯一の利点:/ users / RSmithは、より人間に優しいことです。RESTfullの観点からは、どちらも有効なリソースIDであるため、問題ではありません。他のすべては、システム要件によって異なります。

于 2012-06-05T19:44:52.607 に答える