Quelle est la différence entre la ressource et le point de terminaison?

139

J'ai entendu à la fois «ressource» et «point final» pour désigner la même chose. Il semble que la ressource soit un terme plus récent.

Quelle est la différence entre eux? La "ressource" implique-t-elle une conception RESTful?

B Sept
la source

Réponses:

107

DU REPOS

Resource est un sous-ensemble RESTful de Endpoint .

Un point de terminaison en lui-même est l'emplacement où un service est accessible:

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

Une ressource fait référence à un ou plusieurs noms servis, représentés par un espace de nom, car il est facile à comprendre pour les humains:

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

Tout ce qui précède pourrait être considéré comme des points de terminaison de service, mais seul le groupe du bas serait considéré comme des ressources, en termes de REST. Le groupe supérieur n'est pas expressif quant au contenu qu'il fournit.

Une requête REST est comme une phrase composée de noms (ressources) et de verbes (méthodes HTTP):

  • GET(méthode) l'utilisateur nommé johnny(ressource).
  • DELETE(méthode) le livre avec id 1234(ressource).

Non-REST

Endpoint fait généralement référence à un service, mais la ressource peut signifier beaucoup de choses. Voici quelques exemples de ressources qui dépendent du contexte dans lequel elles sont utilisées.

URL: localisateur de «ressources» uniforme

  • Cela pourrait être RESTful, mais ce n'est souvent pas le cas. Dans ce cas, endpoint est presque synonyme.

La gestion des ressources

dictionnaire

  • Les définitions fournissent de nombreuses autres utilisations du mot.

Quelque chose qui peut être utilisé pour vous aider:

La bibliothèque était une ressource précieuse et il en faisait souvent usage.

Les ressources sont des substances naturelles telles que l'eau et le bois qui sont précieuses pour soutenir la vie:

[pl] La terre a des ressources limitées, et si nous ne les recyclons pas, nous les épuisons.

Les ressources sont également des objets de valeur comme de l'argent ou des biens que vous pouvez utiliser lorsque vous en avez besoin:

[pl] Le gouvernement n'a pas les ressources pour embaucher le nombre d'enseignants nécessaires.


Le moral

Le terme ressource par définition a beaucoup de nuances. Tout dépend du contexte dans lequel il est utilisé.

cchamberlain
la source
1
Je soupçonnais la même chose. Avez-vous vu des références qui expliquent ou documentent cela?
B Seven
Ajout de quelques liens qui donnent une idée de chacun des termes.
cchamberlain
84

Les termes ressource et point final sont souvent utilisés comme synonymes. Mais en fait, ils ne signifient pas la même chose.

Le terme point de terminaison se concentre sur l' URL utilisée pour faire une demande.
Le terme ressource se concentre sur l' ensemble de données renvoyé par une demande.

Désormais, la même ressource est souvent accessible par plusieurs points de terminaison différents .
Le même point de terminaison peut également renvoyer des ressources différentes , en fonction d'une chaîne de requête.

Voyons quelques exemples:

Différents points de terminaison accédant à la même ressource

Jetez un œil aux exemples suivants de différents points de terminaison :

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

Ils pourraient évidemment tous accéder à la même ressource dans une API donnée.

Une API existante pourrait également être complètement modifiée. Cela pourrait conduire à de nouveaux points de terminaison qui accéderaient aux mêmes anciennes ressources en utilisant des URL totalement nouvelles et différentes:

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

Un point de terminaison accédant à différentes ressources

Si votre point de terminaison renvoie une collection, vous pouvez implémenter la recherche / filtrage / tri à l'aide de chaînes de requête. En conséquence, les URL suivantes utilisent toutes le même point de terminaison ( /api/companies), mais elles peuvent renvoyer des ressources différentes (ou des collections de ressources , qui par définition sont des ressources en elles-mêmes):

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens
Jpsy
la source
4
bien expliqué 👍🏻
mangonights
1
"En conséquence, les URL suivantes utilisent toutes le même point de terminaison (/ api / companies), mais elles peuvent renvoyer des ressources différentes." Je ne veux pas vous offenser mais vous inventez simplement votre interprétation ici. En termes de REST, ce ne sont que des emplacements de ressources différentes. La partie du point de terminaison que vous avez essayé de prendre en compte comme une autre partie de l'URL. C'est parce que vous êtes un programmeur et que vous pensez à son implémentation, comme un morceau de code à une seule méthode d'action. Imaginez que toutes ces différentes URL ont été acheminées et servies à partir de 4 serveurs sont-ils tous le même point de terminaison? Cela n'a aucun sens maintenant.
Luke Puplett
1
La raison pour laquelle les chaînes de requête ne font pas partie des points de terminaison est que le point de terminaison ne fait pas partie du langage de REST ni d'une URL. Ce n'est tout simplement pas. Vous pensez en termes de codage de l'application Web de gestion. REST ne mentionne rien sur les paramètres de requête, le tri ou quoi que ce soit. Ce n'est tout simplement pas le cas. Si vous utilisez / orders pour renvoyer une collection et / orders? Top = 10 ce n'est que de jolies URL, ce n'est ni plus ni moins RESTful que d'utiliser des liens vers / 32knre32nj pour la collection et un lien vers / abcd pour les dix premières commandes. Ce ne sont que des identifiants de ressources. Les URL ne peuvent pas être plus ou moins RESTful et un point de terminaison n'est pas une chose.
Luke Puplett
Juste pour ajouter, une partie critique de REST est la liaison, de sorte qu'un consommateur n'a pas besoin de se soucier des identificateurs de ressources, beaucoup je me fiche de savoir ce que l'URL se trouve derrière le bouton Ajouter un commentaire ici. Lorsque nous arrêtons de penser aux points de terminaison et aux jolies URL et plutôt aux hyperliens où l'URL est accessoire, il est beaucoup plus facile de concevoir de belles API basées sur un flux de travail sur l'objectif d'interaction - je veux rechercher une entreprise pour que x - votre API devrait être un voyage vers x où la recherche est au milieu du flux vers l'état final de l'application.
Luke Puplett
Il n'y a pas de définition ou de spécification hautement canonique pour "endpoint". Tout se résume à la technologie utilisée en référence. Exemple concret, google "Qu'est-ce qu'un point de terminaison?" et l'un des meilleurs articles sur le sujet est cette page. Nous le définissons ici en fonction du contexte dans lequel nous l'avons vu utilisé. Tous les exemples de cette réponse sont RESTful, bien que le point de terminaison lui-même ne soit pas nécessairement RESTful. Voir SOAP.
cchamberlain
7

Peut-être que la mienne n'est pas une bonne réponse, mais voilà.

Depuis que je travaille davantage avec des services Web véritablement REST sur HTTP, j'ai essayé d'empêcher les gens d'utiliser le terme point de terminaison car il n'a pas de définition claire, et d'utiliser à la place le langage de REST qui est les ressources et les emplacements des ressources.

À mon avis, endpoint est un terme TCP. Il est confondu avec HTTP car une partie de l'URL identifie un serveur d'écoute.

Donc, la ressource n'est pas un terme plus récent, je ne pense pas, je pense que le point de terminaison a toujours été détourné et nous nous en rendons compte alors que nous nous intéressons à REST en tant que style d'API.

Éditer

J'ai blogué à ce sujet.

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

Luke Puplett
la source
1

Selon https://apiblueprint.org/documentation/examples/13-named-endpoints.html est une ressource un lieu de stockage "général" de l'entité donnée - par exemple / clients / 30654 / orders, alors qu'un endpoint est l'action concrète (Méthode HTTP) sur la ressource donnée. Ainsi, une ressource peut avoir plusieurs points de terminaison.

Dafka
la source
1
Désolé @Dafka, mais vous vous trompez. Un point de terminaison n'a rien à voir avec le verbe (méthode HTTP comme GET, POST, PUT, DELETE, PATCH) qui est utilisé dessus.
Jpsy
0

Prenons un serveur qui contient les informations des utilisateurs, des missions et leurs points de récompense.

  1. Les utilisateurs et les points de récompense sont les ressources
  2. Un point final peut se rapporter à plusieurs ressources
  3. Les points de terminaison peuvent être décrits à l'aide d'une description ou d'une URL complète ou partielle

entrez la description de l'image ici

Source: points de terminaison API vs ressources

srinivas chaitanya
la source
-1

1. Description de la ressource «Ressources» fait référence aux informations renvoyées par une API.

2. Points de terminaison et méthodes Les points de terminaison indiquent comment vous accédez à la ressource, tandis que la méthode indique les interactions autorisées (telles que GET, POST ou DELETE) avec la ressource.

Informations supplémentaires: 3. Paramètres Les paramètres sont des options que vous pouvez transmettre avec le point de terminaison (comme spécifier le format de la réponse ou le montant renvoyé) pour influencer la réponse.

4. Exemple de requête L' exemple de requête comprend un exemple de requête utilisant le point de terminaison, montrant certains paramètres configurés.

5. Exemple de réponse et schéma L'exemple de réponse montre un exemple de réponse de l'exemple de requête; le schéma de réponse définit tous les éléments possibles de la réponse.

Lien source- référence

Manthan_Admane
la source