¿Qué es un punto final de servicio web?

323

Digamos que mi servicio web está ubicado en http://localhost:8080/foo/mywebservicey mi WSDL está en http://localhost:8080/foo/mywebservice?wsdl.

¿Es http://localhost:8080/foo/mywebserviceun punto final, es decir, es el mismo que el URI de mi servicio web o donde se recibieron y desarmaron los mensajes SOAP?

¿Podría explicarme qué es y para qué sirve?

karakays
fuente

Respuestas:

416

Esta es una respuesta más breve y, con suerte, más clara ... Sí, el punto final es la URL donde una aplicación cliente puede acceder a su servicio. El mismo servicio web puede tener múltiples puntos finales, por ejemplo, para que esté disponible utilizando diferentes protocolos.

lbalazscs
fuente
8
@ user137717 No, los sitios web no son servicios web. Las aplicaciones utilizan principalmente un servicio web, mientras que los sitios web son principalmente para humanos.
lbalazscs
44
@ user137717 El punto final es la URL donde una aplicación cliente puede acceder a su servicio web. Si no entiende lo que es un servicio web, lea, por ejemplo, esto: stackoverflow.com/questions/226108/…
lbalazscs
1
+1 de mi parte, y una pregunta: ¿Por qué no llamarlo (es decir, el "punto final") un "URI base"? ¿Existe una diferencia fundamental entre un "punto final" y un "URI base"? Gracias.
Retenido el
1
@Withheld Conceptualmente, existe una diferencia entre un punto final y su dirección, pero en la práctica generalmente se entiende la dirección, porque normalmente necesita configurar un cliente con un "punto final" para encontrar el servicio.
lbalazscs
2
@lbalazscs - Dirección IP: 8080 / foo / ShoppingWebservice / Toys , Dirección IP: 8080 / foo / ShoppingWebservice / Books, etc. - ¿Cómo se llama la parte / Toys, / Books? ¿También se les llama puntos finales o recursos?
MasterJoe2
47

Respuesta actualizada, de Peter en los comentarios:

Esta es la "terminología antigua", utilice directamente la definición "endepoint" WSDL2 (WSDL2 tradujo "puerto" a "punto final").


Tal vez encuentre una respuesta en este documento: http://www.w3.org/TR/wsdl.html

Un documento WSDL define los servicios como colecciones de puntos finales de red o puertos. En WSDL, la definición abstracta de puntos finales y mensajes se separa de su implementación de red concreta o enlaces de formato de datos. Esto permite la reutilización de definiciones abstractas: mensajes, que son descripciones abstractas de los datos que se intercambian, y tipos de puertos que son colecciones abstractas de operaciones. El protocolo concreto y las especificaciones de formato de datos para un tipo de puerto en particular constituyen un enlace reutilizable. Un puerto se define asociando una dirección de red con un enlace reutilizable, y una colección de puertos define un servicio. Por lo tanto, un documento WSDL utiliza los siguientes elementos en la definición de servicios de red:

  • Tipos: un contenedor para definiciones de tipos de datos que utilizan algún sistema de tipos (como XSD).
  • Mensaje: una definición abstracta y escrita de los datos que se comunican.
  • Operación: una descripción abstracta de una acción respaldada por el servicio.
  • Tipo de puerto: un conjunto abstracto de operaciones admitidas por uno o más puntos finales.
  • Enlace: un protocolo concreto y una especificación de formato de datos para un tipo de puerto en particular.
  • Puerto: un único punto final definido como una combinación de un enlace y una dirección de red.
  • Servicio: una colección de puntos finales relacionados.

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

El punto final es un punto de conexión donde se exponen los archivos HTML o las páginas del servidor activo. Los puntos finales proporcionan la información necesaria para abordar un punto final de servicio web. El punto final proporciona una referencia o especificación que se utiliza para definir un grupo o familia de propiedades de direccionamiento de mensajes y proporciona características de mensaje de extremo a extremo, como referencias para el origen y el destino de los puntos finales, y la identidad de los mensajes para permitir la uniformidad direccionamiento de mensajes "independientes". El punto final puede ser una PC, PDA o terminal de punto de venta.

Julien
fuente
72
"Los puntos finales proporcionan la información necesaria para abordar un punto final de servicio web". Tengo que amar esa frase! : D
musaul
2
Esta es la "terminología antigua", use directamente la definición de "punto de conexión" WSDL2 (WSDL2 tradujo "puerto" a "punto final").
Peter Krauss
34

Un punto final de servicio web es la URL que otro programa usaría para comunicarse con su programa. Para ver el WSDL que agrega ?wsdlal URL del punto final del servicio web.

Los servicios web son para la interacción de programa a programa , mientras que las páginas web son para la interacción de programa a humano .

Entonces: Punto final es: http://www.blah.com/myproject/webservice/webmethod

Por lo tanto, WSDL es: http://www.blah.com/myproject/webservice/webmethod?wsdl


Para ampliar aún más los elementos de un WSDL, siempre encuentro útil compararlos con el código:

Un WSDL tiene 2 porciones (física y abstracta).

Porción física:

Definiciones - variables - ej: myVar, x, y, etc.

Tipos - tipos de datos - ej: int, double, String, myObjectType

Operaciones - métodos / funciones - ej: myMethod (), myFunction (), etc.

Mensajes: parámetros de entrada de método / función y tipos de retorno

  • por ejemplo: pública myObjectType myMethod ( Cadena miVar)

Porttypes - clases (es decir, son un contenedor para operaciones) - ej: MyClass {}, etc.

Porción abstracta:

Enlace: se conectan a los porttypes y definen el protocolo elegido para comunicarse con este servicio web. - un protocolo es una forma de comunicación (texto / SMS, teléfono vs. correo electrónico, etc.).

Servicio: enumera la dirección donde otro programa puede encontrar su servicio web (es decir, su punto final ).

specialk1st
fuente
55
Encontré que "los servicios web son para la interacción de programa a programa, mientras que las páginas web son para la interacción de programa a humano" es una declaración muy útil para evitar que me pregunte "por qué demonios la gente no llamaría al punto final como URL"
Minnie
14

En proyectos anteriores en los que trabajé, el punto final era una propiedad relativa. Es decir, puede haber sido añadido o no, pero siempre contenía el protocol://host:port/partOfThePath.

Si el servicio que se llama tenía una parte dinámica, por ejemplo, un ?param=dynamicValue , entonces esa parte se agregaría al punto final. Pero muchas veces el punto final podría usarse tal cual sin tener que ser modificado.

Lo que es importante entender es qué no es un punto final y cómo ayuda. Por ejemplo, una forma alternativa de pasar la información almacenada en un punto final sería almacenar las diferentes partes del punto final en propiedades separadas. Por ejemplo:

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

O si el mismo host y puerto en múltiples servicios:

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

En esos casos, la URL completa debería construirse en su código como tal:

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

En el contrato, esto puede almacenarse como un punto final como tal

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

Y sí, muchas veces almacenamos el punto final hasta e incluyendo el '='. Esto lleva a un código como este:

String url = serviceAEndpoint + dynamicValue;

Espero que arroje algo de luz.

Jose Martinez
fuente
7

En pocas palabras, un punto final es un extremo de un canal de comunicación. Cuando una API interactúa con otro sistema, los puntos de contacto de esta comunicación se consideran puntos finales. Para las API, un punto final puede incluir una URL de un servidor o servicio. Cada punto final es la ubicación desde la cual las API pueden acceder a los recursos que necesitan para llevar a cabo su función.

Las API funcionan con 'solicitudes' y 'respuestas'. Cuando una API solicita información de una aplicación web o servidor web, recibirá una respuesta. El lugar donde las API envían solicitudes y dónde vive el recurso se denomina punto final.

Referencia: https://smartbear.com/learn/performance-monitoring/api-endpoints/

Satya
fuente
6

Un punto final se especifica como una URL relativa o absoluta que generalmente da como resultado una respuesta. Esa respuesta suele ser el resultado de un proceso del lado del servidor que, por ejemplo, podría producir una cadena JSON. Esa cadena puede ser consumida por la aplicación que realizó la llamada al punto final. Por lo tanto, en general, los puntos finales son puntos de acceso predefinidos, utilizados dentro de las redes TCP / IP para iniciar un proceso y / o devolver una respuesta. Los puntos finales pueden contener parámetros pasados ​​dentro de la URL, como pares de valores clave, los pares de valores clave múltiples están separados por un ampersand, lo que permite al punto final llamar, por ejemplo, un proceso de actualización / inserción; por lo tanto, los puntos finales no siempre necesitan devolver una respuesta, pero una respuesta siempre es útil, incluso si es solo para indicar el éxito o el fracaso de una operación.

Martyn Wynn
fuente