我有一个Web服务端点,我偶然发现了如何正确实现它。它似乎是一个参数化的exe文件,它返回一个XML Reply。没有文件。
我习惯了肥皂,wcf和休息,但这对我来说完全不为人知,有没有人指导或最好的案例如何实施这样的服务?我可以通过HTTP GET使用它但是还有一些问题留给我:
我知道这些问题非常广泛......但我在interwebz中找不到任何相关内容。
示例网址:http://very.exhausting.company/Version/SuperStrange.exe?parameter=String
Web服务器
您称之为Web服务端点的只不过是在某个主机(通常为0.0.0.0)上侦听的Web服务器以及物理机或虚拟机上的某个端口,并且对发送到该主机,端口和URI的HTTP请求的某些HTTP响应进行响应Web服务器关心处理。
任何Web服务器本身都是应用程序或应用程序的静态或动态组件,如以下示例所示:
java -jar
,它部署了一个vert.x
垂直,其特点是在一些端口上监听vert.x
HttpServer
只不过是一个Web服务器;node.js
这样的解释器解析并执行基于express
模块的JavaScript代码很可能会在某个端口上部署Web服务器;所有上述情况都具有不同的部署机制,但它们部署的内容基本相同:一个软件在某个端口上侦听HTTP请求,根据请求执行某些逻辑并将HTTP响应返回给调用者。
您的Windows exe文件很可能是提供Web服务器的静态链接应用程序。
协议
所以我们知道你有一个Web服务器,因为它对HTTP GET作出反应。它与REST,SOAP等有何关系?实际上,REST,SOAP等是更高级别的协议。 TCP是低级别的,HTTP基于此,您的服务器支持它。 REST,SOAP以及您提到的所有其他内容都是基于HTTP的更高级协议。所有你知道的是你的应用程序(Web服务器)支持HTTP,但你不知道它实现了哪种更高级别的数据交换协议。它肯定实现了一些,至少是一个自定义的,它的作者在客户端和这个应用程序之间交换数据。
您可以尝试对其进行反向工程,但目前尚不清楚如何找到所有可能的端点,参数,有效负载结构,接受的标题等。实际上,您有一个Web服务器发布某种API,但没有告诉API是什么的通用方式。
安全
您周围的世界不必知道API的发布方式。您可以将上述4个Web服务器实现中的任何一个置于完全相同的防火墙或具有SSL终止的反向代理,仅通过SSL暴露一个主机和端口。因此,对于世界而言,无论是将其作为exe还是作为战争部署到JBoss中,安全性都没有区别。这并不是说你的exe文件是安全的:取决于它的实现方式,它可能允许各种攻击,但同样,对于任何机制都是如此。