Qu'est-ce qu'un point de terminaison de service Web?

323

Disons que mon service Web est situé à http://localhost:8080/foo/mywebserviceet que mon WSDL est à http://localhost:8080/foo/mywebservice?wsdl.

Est-ce http://localhost:8080/foo/mywebserviceun point de terminaison, c.-à-d. Est-il le même que l'URI de mon service Web ou où les messages SOAP ont-ils été reçus ou non?

Pourriez-vous s'il vous plaît m'expliquer de quoi il s'agit et quel est son objectif?

karakays
la source

Réponses:

416

Il s'agit d'une réponse plus courte et, espérons-le, plus claire ... Oui, le point de terminaison est l'URL à laquelle votre service est accessible par une application cliente. Un même service Web peut avoir plusieurs points de terminaison, par exemple afin de le rendre disponible à l'aide de différents protocoles.

lbalazscs
la source
8
@ user137717 Non, les sites Web ne sont pas des services Web. Un service Web est principalement utilisé par les applications, tandis que les sites Web sont principalement destinés aux humains.
lbalazscs
4
@ user137717 Le point de terminaison est l'URL à laquelle votre service Web est accessible par une application cliente. Si vous ne comprenez pas ce qu'est un service Web, lisez par exemple ceci: stackoverflow.com/questions/226108/…
lbalazscs
1
+1 de ma part, aussi, et une question: pourquoi ne pas simplement l'appeler (c'est-à-dire ce qu'on appelle "endpoint") un "URI de base"? Existe-t-il une différence fondamentale entre un "point final" et un "URI de base"? Merci.
Retenu le
1
@Withheld Sur le plan conceptuel, il existe une différence entre un point de terminaison et son adresse, mais dans la pratique, il s'agit généralement de l'adresse, car vous devez généralement configurer un client avec un «point de terminaison» pour trouver le service.
lbalazscs
2
@lbalazscs - Adresse IP: 8080 / foo / ShoppingWebservice / Toys , Adresse IP: 8080 / foo / ShoppingWebservice / Books etc. - Comment s'appelle la partie / Toys, / Books? Sont-ils également appelés points de terminaison ou ressources?
MasterJoe2
47

Réponse mise à jour, de Peter dans les commentaires:

Il s'agit d'une "ancienne terminologie", utilisez directement la définition WSDL2 "endepoint" (WSDL2 traduit "port" en "endpoint").


Vous trouverez peut-être une réponse dans ce document: http://www.w3.org/TR/wsdl.html

Un document WSDL définit les services comme des ensembles de points de terminaison réseau ou ports. Dans WSDL, la définition abstraite des points de terminaison et des messages est séparée de leur déploiement réseau concret ou de leurs liaisons de format de données. Cela permet de réutiliser des définitions abstraites: des messages, qui sont des descriptions abstraites des données échangées, et des types de ports qui sont des collections abstraites d'opérations. Le protocole concret et les spécifications de format de données pour un type de port particulier constituent une liaison réutilisable. Un port est défini en associant une adresse réseau à une liaison réutilisable, et une collection de ports définit un service. Par conséquent, un document WSDL utilise les éléments suivants dans la définition des services réseau:

  • Types - un conteneur pour les définitions de types de données utilisant un système de type (tel que XSD).
  • Message - une définition abstraite et typée des données communiquées.
  • Opération - une description abstraite d'une action prise en charge par le service.
  • Type de port - un ensemble abstrait d'opérations prises en charge par un ou plusieurs points de terminaison.
  • Liaison - un protocole concret et une spécification de format de données pour un type de port particulier.
  • Port - un point de terminaison unique défini comme une combinaison d'une liaison et d'une adresse réseau.
  • Service - une collection de points de terminaison associés.

http://www.ehow.com/info_12212371_definition-service-endpoint.html

Le point de terminaison est un point de connexion où les fichiers HTML ou les pages de serveur actives sont exposés. Les points de terminaison fournissent les informations nécessaires pour adresser un point de terminaison de service Web. Le point de terminaison fournit une référence ou une spécification qui est utilisée pour définir un groupe ou une famille de propriétés d'adressage de message et donner des caractéristiques de message de bout en bout, telles que des références pour la source et la destination des points de terminaison, et l'identité des messages pour permettre une uniformité adressage de messages "indépendants". Le point de terminaison peut être un PC, un PDA ou un terminal de point de vente.

Julien
la source
72
"Les noeuds finaux fournissent les informations nécessaires pour adresser un noeud final de service Web." Je dois aimer cette phrase! : D
musaul
2
Il s'agit d'une "ancienne terminologie", utilisez directement la définition WSDL2 "endepoint" (WSDL2 traduit "port" en "endpoint").
Peter Krauss
34

Un point de terminaison de service Web est l'URL qu'un autre programme utiliserait pour communiquer avec votre programme. Pour voir le WSDL que vous ajoutez ?wsdlà l'URL du point de terminaison du service Web.

Les services Web sont destinés à l' interaction de programme à programme , tandis que les pages Web sont destinées à l' interaction de programme à humain .

Donc: Endpoint est: http://www.blah.com/myproject/webservice/webmethod

Par conséquent, WSDL est: http://www.blah.com/myproject/webservice/webmethod?wsdl


Pour développer davantage les éléments d'un WSDL, je trouve toujours utile de les comparer au code:

Un WSDL comprend 2 parties (physique et abstraite).

Portion physique:

Définitions - variables - ex: myVar, x, y, etc.

Types - types de données - ex: int, double, String, myObjectType

Opérations - méthodes / fonctions - ex: myMethod (), myFunction (), etc.

Messages - paramètres d'entrée de méthode / fonction et types de retour

  • ex: public myObjectType myMethod ( String myVar)

Porttypes - classes (c'est-à-dire qu'elles sont un conteneur pour les opérations) - ex: MyClass {}, etc.

Partie abstraite:

Liaison - ceux-ci se connectent aux types de port et définissent le protocole choisi pour communiquer avec ce service Web. - un protocole est une forme de communication (donc texte / SMS, vs téléphone vs email, etc.).

Service - cela répertorie l'adresse où un autre programme peut trouver votre service Web (c'est-à-dire votre point de terminaison ).

specialk1st
la source
5
J'ai trouvé que "les services Web sont pour l'interaction de programme à programme, tandis que les pages Web sont pour l'interaction de programme à humain" est une déclaration très utile pour m'empêcher de comprendre "pourquoi diable les gens n'appelleraient-ils pas simplement le point final comme URL"
Minnie
14

Dans les projets précédents sur lesquels j'ai travaillé, le point final était une propriété relative. C'est-à-dire qu'il peut ou non être annexé, mais il contenait toujours le protocol://host:port/partOfThePath.

Si le service appelé avait une partie dynamique, par exemple un ?param=dynamicValue , cette partie serait ajoutée au point de terminaison. Mais à plusieurs reprises, le critère d'évaluation pourrait être utilisé tel quel sans avoir à être modifié.

Ce qui est important à comprendre, c'est ce qu'un point final n'est pas et comment il aide. Par exemple, une autre façon de transmettre les informations stockées dans un point de terminaison serait de stocker les différentes parties du point de terminaison dans des propriétés distinctes. Par exemple:

hostForServiceA=someIp
portForServiceA=8080
pathForServiceA=/some/service/path
hostForServiceB=someIp
portForServiceB=8080
pathForServiceB=/some/service/path

Ou si le même hôte et le même port sur plusieurs services:

host=someIp
port=8080
pathForServiceA=/some/service/path
pathForServiceB=/some/service/path

Dans ces cas, l'URL complète devrait être construite dans votre code en tant que telle:

String url = "http://" + host + ":" + port + pathForServiceA  + "?" + dynamicParam + "=" + dynamicValue;

Dans le contrat, cela peut être stocké en tant que point final en tant que tel

serviceAEndpoint=http://host:port/some/service/path?dynamicParam=

Et oui, plusieurs fois, nous avons stocké le point de terminaison jusqu'au «=» inclus. Cela a conduit à un code comme celui-ci:

String url = serviceAEndpoint + dynamicValue;

J'espère que cela fait la lumière.

Jose Martinez
la source
7

Autrement dit, un point de terminaison est une extrémité d'un canal de communication. Lorsqu'une API interagit avec un autre système, les points de contact de cette communication sont considérés comme des points de terminaison. Pour les API, un point de terminaison peut inclure l'URL d'un serveur ou d'un service. Chaque point de terminaison est l'emplacement à partir duquel les API peuvent accéder aux ressources dont elles ont besoin pour exécuter leur fonction.

Les API fonctionnent à l'aide de «demandes» et de «réponses». Lorsqu'une API demande des informations à une application Web ou à un serveur Web, elle recevra une réponse. L'endroit où les API envoient les demandes et où réside la ressource est appelé un point de terminaison.

Référence: https://smartbear.com/learn/performance-monitoring/api-endpoints/

Satya
la source
6

Un point de terminaison est spécifié comme une URL relative ou absolue qui se traduit généralement par une réponse. Cette réponse est généralement le résultat d'un processus côté serveur qui, par exemple, pourrait produire une chaîne JSON. Cette chaîne peut ensuite être consommée par l'application qui a effectué l'appel au point de terminaison. Ainsi, en général, les points de terminaison sont des points d'accès prédéfinis, utilisés dans les réseaux TCP / IP pour lancer un processus et / ou renvoyer une réponse. Les points de terminaison peuvent contenir des paramètres transmis dans l'URL, en tant que paires valeur / clé, plusieurs paires valeur / clé sont séparées par une esperluette, ce qui permet au point de terminaison d'appeler, par exemple, un processus de mise à jour / insertion; les points de terminaison n'ont donc pas toujours besoin de renvoyer une réponse, mais une réponse est toujours utile, même si elle ne sert qu'à indiquer le succès ou l'échec d'une opération.

Martyn Wynn
la source