これがばかげた質問ではないことを願っていますが、今日、RESTful と見なされるにはユーザーフレンドリーな URL を介して PHP Web サービスにアクセスする必要があるというコメントを受け取りました。これは本当ですか?
ありがとう!
ユーザーフレンドリーなURLは明確に定義されていないため、そのような制約はありません。ユーザーフレンドリーはユーザーによって異なります。そのような制約はなく、HTTPはRESTfulであり、「ユーザーフレンドリー」ではないURLがたくさんあります。
ウィキペディアのRestfulInformationがすべてであるというわけではありませんが、定義された制約によれば、ユーザーフレンドリーなURLはその1つではありません。
RESTアーキテクチャスタイルは、アーキテクチャに適用される次の6つの制約を記述しますが、個々のコンポーネントの実装は自由に設計できます。
クライアントサーバー
統一されたインターフェースは、クライアントをサーバーから分離します。この関心の分離は、たとえば、クライアントが各サーバーの内部に残るデータストレージに関心がないことを意味し、クライアントコードの移植性が向上します。サーバーはユーザーインターフェイスやユーザーの状態に関係しないため、サーバーをよりシンプルでスケーラブルにすることができます。サーバーとクライアントは、それらの間のインターフェースが変更されない限り、独立して交換および開発することもできます。
ステートレス
クライアントとサーバーの通信は、リクエスト間でサーバーにクライアントコンテキストが保存されていないため、さらに制約されます。クライアントからの各リクエストには、リクエストを処理するために必要なすべての情報が含まれており、セッション状態はクライアントで保持されます。サーバーはステートフルにすることができます。この制約は、サーバー側の状態がリソースとしてURLによってアドレス可能であることを単に必要とします。これにより、サーバーが監視しやすくなるだけでなく、部分的なネットワーク障害が発生した場合でもサーバーの信頼性が高まり、スケーラビリティがさらに向上します。
キャッシュ可能
World Wide Webと同様に、クライアントは応答をキャッシュできます。したがって、応答は、クライアントがさらなる要求に応答して古いデータまたは不適切なデータを再利用することを防ぐために、暗黙的または明示的に、キャッシュ可能であるかどうかを定義する必要があります。適切に管理されたキャッシングにより、クライアントとサーバーの相互作用が部分的または完全に排除され、スケーラビリティとパフォーマンスがさらに向上します。
階層化システム
クライアントは通常、エンドサーバーに直接接続されているのか、途中で仲介者に接続されているのかを判断できません。中間サーバーは、負荷分散を有効にし、共有キャッシュを提供することにより、システムのスケーラビリティを向上させることができます。また、セキュリティポリシーを適用する場合もあります。
オンデマンドのコード(オプション)
サーバーは、実行可能コードを転送することにより、クライアントの機能を一時的に拡張またはカスタマイズできます。この例には、Javaアプレットなどのコンパイル済みコンポーネントやJavaScriptなどのクライアント側スクリプトが含まれる場合があります。
統一されたインターフェース
以下で説明するクライアントとサーバー間の統一されたインターフェイスは、アーキテクチャを簡素化および分離し、各部分を独立して進化させることを可能にします。このインターフェースの4つの基本原則を以下に詳しく説明します。
RESTアーキテクチャの唯一のオプションの制約は、オンデマンドのコードです。サービスが他の制約に違反している場合、それを厳密にRESTfulと見なすことはできません。
これらの制約に準拠し、したがってRESTアーキテクチャスタイルに準拠することで、あらゆる種類の分散ハイパーメディアシステムに、パフォーマンス、スケーラビリティ、シンプルさ、変更可能性、可視性、移植性、信頼性などの望ましい創発的特性を持たせることができます。