如何根据模式定义验证REST有效负载(xml)?
XSD应该至少定义什么?
为XML中的剩余有效负载提供xsds是一个好习惯,这样消费者可以在打电话之前验证这些xsds吗?
答案 0 :(得分:0)
所以,如果你用Java标记它,你可能会获得更多的答案,但是基于这篇文章(Validating XML against XSD (你想要这样的东西:
static boolean validateAgainstXSD(InputStream xml, InputStream xsd)
{
try
{
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(xsd));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(xml));
return true;
}
catch(Exception ex)
{
return false;
}
}
您的XSD应该定义XML文档中的所有元素,属性和记录,以及它们发生的频率以及它们是否可以最小化。我不知道使用REST提供WSDL的定义明确的方法,但您可能会考虑通过您的接口进行一些API调用,它基本上提供了您为消费者使用的WSDL / XSD。
说到这一点,为什么不使用基于SOAP的接口呢? REST很棒并且有它的位置,但听起来你正在寻找具有强大类型和契约的消息传递协议 - 这就是SOAP更适合的。