什么是Web服务端点?


323

假设我的Web服务位于,http://localhost:8080/foo/mywebservice而WSDL位于http://localhost:8080/foo/mywebservice?wsdl

http://localhost:8080/foo/mywebservice端点,即它与我的Web服务的URI相同还是在SOAP消息的接收和解组位置?

您能给我解释一下它的含义和目的吗?

Answers:


416

这是一个简短但希望更清晰的答案...是的,端点是客户端应用程序可以访问您的服务的URL。相同的Web服务可以具有多个端点,例如,以便使用不同的协议使其可用。


8
@ user137717不,网站不是Web服务。Web服务主要供应用程序使用,而网站主要供人类使用。
lbalazscs 2014年

4
@ user137717端点是客户端应用程序可以访问您的Web服务的URL。如果你不明白Web服务是什么,例如读取该stackoverflow.com/questions/226108/...
lbalazscs

1
我也向+1提出一个问题:为什么不直接将它(即所谓的“端点”)称为“基本URI”?“端点”和“基本URI”之间有根本区别吗?谢谢。
2015年

1
@Withheld从概念上讲,端点及其地址之间是有区别的,但实际上通常是指地址,因为通常需要为客户端配置“端点”才能找到服务。
lbalazscs

2
@lbalazscs- IP地址:8080 / foo / ShoppingWebservice / ToysIP地址:8080 / foo / ShoppingWebservice / Books等-/ Toys / Books部分叫什么?它们也称为端点或资源吗?
MasterJoe2

47

更新的答案,来自Peter评论:

这是“旧术语”,直接使用WSDL2的“端点”定义(WSDL2将“端口”转换为“端点”)。


也许您可以在本文档中找到答案:http : //www.w3.org/TR/wsdl.html

WSDL文档将服务定义为网络端点或端口的集合。在WSDL中,端点和消息的抽象定义与它们的具体网络部署或数据格式绑定是分开的。这样就可以重用抽象定义:消息(它们是要交换的数据的抽象描述)和端口类型(它们是操作的抽象集合)。特定端口类型的具体协议和数据格式规范构成了可重用的绑定。通过将网络地址与可重用的绑定相关联来定义端口,并且端口的集合定义了服务。因此,WSDL文档在网络服务的定义中使用以下元素:

  • 类型–使用某种类型系统(例如XSD)的数据类型定义的容器。
  • 消息–所通信数据的抽象,类型化的定义。
  • 操作-服务支持的操作的抽象描述。
  • 端口类型–一个或多个端点支持的一组抽象操作。
  • 绑定–特定端口类型的具体协议和数据格式规范。
  • 端口–定义为绑定和网络地址的组合的单个端点。
  • 服务–相关端点的集合。

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

端点是显示HTML文件或活动服务器页面的连接点。端点提供解决Web服务端点所需的信息。端点提供了一个参考或规范,用于定义一组或一组消息寻址属性并给出端到端的消息特征,例如端点的源和目标的引用以及消息的标识,以实现统一解决“独立”消息。端点可以是PC,PDA或销售点终端。


72
“端点提供了解决Web服务端点所需的信息。” 一定喜欢那句话!:D
musaul

2
这是“旧术语”,直接使用WSDL2的“端点”定义(WSDL2将“端口”转换为“端点”)。
彼得·克劳斯

34

Web服务端点是另一个程序用来与您的程序进行通信的URL 。要查看WSDL,请添加?wsdl到Web服务端点URL。

Web服务用于程序到程序的交互,而网页用于程序到人的交互。

所以:端点是: http://www.blah.com/myproject/webservice/webmethod

因此,WSDL为: http://www.blah.com/myproject/webservice/webmethod?wsdl


为了进一步扩展WSDL的元素,我总是发现将它们与代码进行比较很有帮助:

WSDL有2部分(物理部分和抽象部分)。

物理部分:

定义-变量-例如:myVar,x,y等

类型-数据类型-例如:int,double,String,myObjectType

操作-方法/功能-例如:myMethod(),myFunction()等。

消息-方法/函数输入参数和返回类型

  • 例如:public myObjectType myMethod(String myVar)

端口类型-类(即它们是用于操作的容器)-例如:MyClass {}等。

摘要部分:

绑定-这些连接到端口类型,并定义用于与此Web服务通信的所选协议。-协议是一种通信形式(因此,文本/ SMS,电话,电子邮件等)。

服务-这列出了另一个程序可以在其中找到您的Web服务的地址(即,端点)。


5
我发现“ Web服务用于程序到程序的交互,而网页是程序到人的交互”,这对阻止我困惑“为什么人们不会只是将终点称为URL”非常有用
Minnie

14

在我以前从事的项目中,端点是相对属性。也就是说,它可能已附加,也可能未附加,但始终包含protocol://host:port/partOfThePath

如果被调用的服务具有动态部分,例如?param=dynamicValue,则该部分将被添加到端点。但是很多时候端点可以按原样使用而不必进行修改。

重要的是要了解端点不是什么以及它如何提供帮助。例如,传递存储在端点中的信息的另一种方法是将端点的不同部分存储在单独的属性中。例如:

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

或者,如果同一主机和端口跨多个服务:

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

在这种情况下,将需要在您的代码中这样构造完整的URL:

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

在合同中,它可以这样存储为端点

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

是的,很多时候我们将端点存储到'='并包含在内。这导致这样的代码:

String url = serviceAEndpoint + dynamicValue;

希望能有所启发。


7

简而言之,端点是通信通道的一端。当API与另一个系统交互时,此通信的接触点被视为端点。对于API,端点可以包括服务器或服务的URL。每个端点都是API可以访问其执行功能所需资源的位置。

API使用“请求”和“响应”来工作。当API从Web应用程序或Web服务器请求信息时,它将收到响应。API发送请求的地方以及资源所在的地方称为端点。

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


6

端点被指定为通常导致响应的相对或绝对URL。该响应通常是服务器端进程的结果,该进程可以例如生成JSON字符串。然后,该字符串可以由调用端点的应用程序使用。因此,一般而言,端点是预定义的访问点,在TCP / IP网络中使用它们来启动进程和/或返回响应。端点可以包含在URL内传递的参数,因为键值对,多个键值对用&符分隔,从而允许端点调用例如更新/插入过程;因此,端点不必总是返回响应,但是响应总是有用的,即使它只是指示操作的成功或失败。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.