Я создаю некоторые сервисы, использующие JAX-RS, которые должны принимать в качестве аргументов произвольно сложные объекты, а не только примитивы, такие как целые числа и строки. Обсуждение в списке рассылки CXF говорит, что в этом случае нужно просто использовать объект-оболочку в качестве единственного параметра.
Меня интересует, как документировать формат ввода в сервис? Если создается сервис, который выглядит примерно так:
@POST
@Produces("application/json")
@Consumes("application/json")
@Path("oneParam")
public ComplexObject2 myServiceMethod(ComplexObject1 obj) {
Foo f = obj.foo
Bar b = obj.bar
...
}
автоматически сгенерированный WADL, который производит CXF, выдаст только следующее:
<resource path="/oneParam">
<method name="POST">
<request>
<representation mediaType="application/json"/>
</request>
<response>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
Не содержит информации о том, что на самом деле содержится в запросе или ответе. Сергей в списке рассылки CXF сказал, что можно связать схему с представлением, но как мне это сделать? И как мне создать XSD?
(PS Использование POST для идемпотентных ресурсов может быть не RESTful, но здесь это не важно, поскольку мы, по сути, делаем RPC с использованием Json. Это более или менее клон 1: 1 существующего API на основе SOAP.)