リソースとエンドポイントの違いは何ですか?


139

「リソース」と「エンドポイント」の両方が同じものを指すと聞いたことがあります。リソースは新しい用語のようです。

それらの違いは何ですか?「リソース」はRESTfulな設計を意味しますか?

回答:


107

残り

リソースは、エンドポイントの RESTfulサブセットです。

エンドポイントそれ自体は、サービスにアクセスできる場所です。

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

リソースは、人間が理解することが容易であることから、名前空間形式で表され、一つ以上の名詞が提供されることに言及します。

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

上記のすべてをサービスエンドポイントと見なすことができますが、RESTfulに言えば、一番下のグループのみがリソースと見なされます。トップグループはそれが提供するコンテンツに関して表現力がありません。

RESTリクエストは、名詞(リソース)と動詞(HTTPメソッド)で構成される文のようなものです。

  • GET(メソッド)johnny(リソース)という名前のユーザー。
  • DELETE(メソッド)id 1234(リソース)の本。

非休憩

エンドポイントは通常サービスを指しますが、リソースは多くのことを意味する可能性があります。以下は、リソースが使用されるコンテキストに依存するリソースの例です。

URL:統一「リソース」ロケーター

  • RESTfulである可能性がありますが、多くの場合そうではありません。この場合、エンドポイントはほとんど同義です。

資源管理

  • GCP / AWS、リソースは、クラウド・インフラストラクチャに関連して使用されます。
  • 一般的なコンピューティングでは、リソースは、可用性が制限されたコンポーネントへの参照です。

辞書

  • 定義は、単語のより多くの用途を提供しています。

あなたを助けるために使用できる何か:

ライブラリは貴重なリソースであり、彼はそれを頻繁に利用しました。

資源は、水や木材などの生命維持に役立つ貴重な天然物質です。

[pl]地球には限られた資源しかなく、リサイクルしなければ、使い果たしてしまいます。

リソースは、お金や所有物など、必要なときに使用できる貴重なものでもあります。

[pl]政府には必要な数の教師を雇うためのリソースがありません。


道徳

定義上、リソースという用語には多くのニュアンスがあります。それはすべて、それが使用されるコンテキストに依存します


1
私は同じことを疑った。これを説明または文書化する参考資料を見たことがありますか?
Bセブン

各用語の感触を与えるいくつかのリンクを追加しました。
チェンバレン2015年

84

用語のリソースおよびエンドポイントは、多くの場合、同義的に使用されています。しかし、実際にはそれらは同じことを意味するものではありません。

エンドポイントという用語は、要求を行うために使用されるURLに焦点を合わせていますリソース
という用語は、要求によって返されるデータセットに重点を置いています

現在では、複数の異なるエンドポイントから同じリソースにアクセスできることがよくあります
また、同じエンドポイント異なるリソースを返す可能性がありますクエリ文字列によってあります。

いくつかの例を見てみましょう:

同じリソースにアクセスする異なるエンドポイント

以下のさまざまなエンドポイントの例をご覧ください。

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

それらは明らかに、与えられたAPIの非常に同じリソースにすべてアクセスできます。

また、既存のAPIを完全に変更することもできます。これにより、まったく新しい異なるURLを使用して、同じ古いリソースにアクセスする新しいエンドポイントにつながる可能性があります。

/api/employees/3
/new_api/staff/3

異なるリソースにアクセスする1つのエンドポイント

エンドポイントがコレクションを返す場合、クエリ文字列を使用して検索/フィルタリング/ソートを実装できます。その結果、次のURLはすべて同じエンドポイント/api/companies)を使用しますが、異なるリソース(または定義上はそれ自体がリソースであるリソースコレクション)を返す可能性があります

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens

4
うまく説明された👍🏻– mangonights '26
08/26

1
「その結果、次のURLはすべて同じエンドポイント(/ api / companies)を使用しますが、異なるリソースを返す可能性があります。」私は罪を意味しませんが、あなたは本当にここであなたの解釈を補っているだけです。RESTに関しては、これらは異なるリソースの場所にすぎません。URLの他の部分として説明しようとしたエンドポイント部分。それは、あなたがプログラマーであり、単一のアクションメソッドのコードの一部として、その実装方法を考えているからです。これらすべての異なるURLが4つのサーバーからルーティングされ、提供されていると想像してください。それらはすべて同じエンドポイントですか?今では意味がありません。
ルークプレット

1
クエリ文字列がエンドポイントの一部ではない理由は、エンドポイントがRESTの言語やURLの一部ではないためです。そうではありません。処理するWebアプリケーションのコーディングに関して考えています。RESTはクエリパラメータや並べ替えなどについては何も言及していません。そうではありません。/ ordersを使用してコレクションを返し、/ orders?top = 10がきれいなURLである場合、コレクションには/ 32knre32njへのリンクを使用し、上位10のオーダーには/ abcdへのリンクを使用するよりもRESTfulです。それらは単なるリソース識別子です。URLを多かれ少なかれRESTfulにすることはできず、エンドポイントは重要ではありません。
ルークプレット

追加するだけで、RESTの重要な部分はリンクです。そのため、コンシューマーはリソース識別子を気にする必要がありません。ここにある[コメントを追加]ボタンの後ろにURLが何があるかは気にしません。エンドポイントときれいなURLで考えるのをやめ、代わりにURLが付随しているハイパーリンクでは、インタラクションの目標に基づいてワークフローベースのAPIを設計する方がはるかに簡単です。会社を検索してx-APIを旅にする必要があります。検索が最終的なアプリケーション状態へのフローの途中にあるxへ。
ルークプレット

「エンドポイント」の非常に標準的な定義や仕様はありません。それはすべて、参照に使用されているテクノロジーに要約されます。適例、グーグル「エンドポイントとは何ですか?」そして問題のトップ記事の一つはこのページです。ここでは、これまで使用してきたコンテキストに基づいて定義しています。この回答の例はすべてRESTfulですが、エンドポイント自体は必ずしもRESTfulである必要はありません。SOAPを参照してください。
チェンバレン

7

おそらく私のものは良い答えではありませんが、ここに行きます。

HTTPを介して真にRESTfulなWebサービスを使用して作業するため、明確な定義がないため、エンドポイントという用語の使用を避け、代わりにリソースとリソースの場所であるRESTの言語を使用するようにしました。

私の考えでは、エンドポイントはTCP用語です。URLの一部がリッスンしているサーバーを識別するため、HTTPと互換性があります。

したがって、リソースは新しい用語ではないと思います。エンドポイントは常に悪用されていたと思います。APIのスタイルとしてRESTに目を向けているので、それを実感しています。

編集する

これについてブログに書いた。

https://medium.com/@lukepuplett/stop-saying-endpoints-92c19e33e819


1

によると https://apiblueprint.org/documentation/examples/13-named-endpoints.htmlすること、リソースのに対し、例えば/顧客/ 30654 /受注-指定されたエンティティのストレージの「一般的な」場所のエンドポイントが具体的な行動であります(HTTPメソッド)指定されたリソース。したがって、1つのリソースが複数のエンドポイントを持つことができます。


1
申し訳ありませんが、@ Dafka、あなたは間違っています。エンドポイントは、エンドポイントで使用されている動詞(GET、POST、PUT、DELETE、PATCHなどのHTTPメソッド)とは何の関係もありません。
Jpsy

0

ユーザー、ミッション、およびそれらの報酬ポイントの情報を持つサーバーを考えてみましょう。

  1. ユーザーと報酬ポイントはリソースです
  2. エンドポイントは複数のリソースに関連付けることができます
  3. エンドポイントは、説明または完全なURLまたは部分的なURLを使用して説明できます

ここに画像の説明を入力してください

出典: APIエンドポイントとリソース


-1

1.リソースの説明 「リソース」とは、APIによって返される情報を指します。

2.エンドポイントとメソッド エンドポイントはリソースへのアクセス方法を示し、メソッドはリソースとの許可された対話(GET、POST、DELETEなど)を示します。

追加情報: 3.パラメーター パラメーターは、エンドポイントと共に渡すことができるオプション(応答フォーマットや返される量の指定など)で、応答に影響を与えます。

4.リクエストの例 リクエストの例には、エンドポイントを使用したサンプルリクエストが含まれており、構成されたいくつかのパラメーターを示しています。

5.応答の例とスキーマ 応答の例は、要求の例からの応答の例を示しています。応答スキーマは、応答のすべての可能な要素を定義します。

ソース- 参照リンク

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