什么是 API
API(Application Programming Interface)即应用程序编程接口,是不同软件系统之间进行对话的通用语言。简单来说,它定义了程序如何请求服务以及返回什么数据。
在实际开发中,我们常说的网络 API(Web API)通常由端点(URL)、HTTP 方法(GET、POST 等)和数据格式(JSON、XML 等)组成。比如调用天气服务获取上海的数据:
import requests
response = requests.get("http://api.weatherapi.com/v1/city?key=aaaaaa&q=Shanghai")
data = response.json()
print(data)
这段代码展示了最基础的交互模式:发起请求,接收响应,解析数据。这种机制让手机 APP 能获取新闻,银行网站能处理支付,背后都是 API 在支撑。
Web Service 与 SOAP
Web Service 是一个更宏观的概念,指通过网络提供服务的应用程序。它们允许不同平台、不同语言编写的系统互相通信。传统的 Web Service 常基于 SOAP 协议,使用 XML 消息格式。
SOAP 虽然功能强大且规范严格,但结构相对复杂。一个典型的 SOAP 请求如下:
POST /weather HTTP/1.1
Host: www.example.com
Content-Type: text/xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetWeather xmlns:m="http://www.example.org/weather">
<m:City>London</m:City>
</m:GetWeather>
</soap:Body>
</soap:Envelope>
在 Java 生态中,实现 SOAP Web Service 主要有两种路径:JAX-WS 和 Spring WS。
@WebService 注解来自 JAX-WS(Java API for XML Web Services),它是 Java EE 规范的一部分,遵循 WS-*标准,适合需要标准 Java 支持且配置较少的场景。而 @Endpoint 注解则来自 Spring Web Services(Spring WS),它不依赖企业 Java 的标准,而是建立在 Spring 框架之上,提供更灵活的配置和更好的集成,特别适合需要深度集成和复杂配置的企业级应用。
相比之下,RESTful Web Service 基于 HTTP 协议,更简单灵活,也是目前互联网开发的主流选择。


