从WSDL生成接口语法
1. 服务约束概述
在一些服务中,存在着特定的约束条件,但这些约束无法通过WSDL接口文档进行正式描述。例如:
- DoExpressCheckoutPaymentRequest中的PayerID字段必须是GetExpressCheckoutDetails响应中返回的,且Token元素要匹配。
- 如果SetExpressCheckout操作的action元素设置为“Sale”,则在DoExpressCheckoutPayment中不能更改;否则,Get和Do操作可以有不同的action值。
- 为确保每个Express Checkout实例最终完成,每个SetExpressCheckout操作必须与后续的GetExpressCheckoutDetails和DoExpressCheckoutPayment请求相匹配。
2. 将WSDL转换为接口语法
手动编写接口语法需要大量的样板代码,为了减轻这一困难,开发了一种工具,可利用类型信息自动将与WSDL规范关联的数据结构转换为接口语法,无需用户输入。
2.1 从XML Schema到接口语法的转换
WSDL规范使用XML Schema对所有类型进行编码,为了更简洁地表示,使用了Model Schema Language (MSL)形式化方法。定义了简化版的MSL,其类型表达式如下:
g → b
| t[g0]
| g1{m, n}
| g1, ..., gk
| g1 | ... | gk