Tworzę niektóre usługi za pomocą JAX-RS, które muszą przyjmować dowolnie złożone obiekty jako argumenty, a nie tylko prymitywy, takie jak liczby całkowite i ciągi. A discussion on the CXF mailing list mówi, aby w tym przypadku użyć tylko obiektu opakowującego jako pojedynczego parametru.Tworzenie i łączenie XSD z WADL
Mój problem polega na udokumentowaniu formatu wejściowego usługi? Jeśli stworzenie usługi, która wygląda mniej więcej tak:
@POST
@Produces("application/json")
@Consumes("application/json")
@Path("oneParam")
public ComplexObject2 myServiceMethod(ComplexObject1 obj) {
Foo f = obj.foo
Bar b = obj.bar
...
}
auto generowane WADL że CXF produkuje tylko produkować następujące:
<resource path="/oneParam">
<method name="POST">
<request>
<representation mediaType="application/json"/>
</request>
<response>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
ten nie zawiera informacji na temat tego, co wniosek lub odpowiedź faktycznie zawiera. Sergey na liście mailingowej CXF powiedział, że możliwe jest połączenie schematu z reprezentacją, ale jak mam to zrobić? I jak utworzyć XSD?
(PS Używanie testu POST dla zasobów idempotentnych może nie być RESTful, ale nie ma tu znaczenia, ponieważ w istocie robimy RPC, używając Json, to jest mniej więcej klon 1: 1 istniejącego interfejsu API opartego na protokole SOAP.)
Schemat ma pomóc programistom dowiedzieć się, co jest wysyłane i zwracane, niekoniecznie do sprawdzania poprawności danych wyjściowych urządzenia. Tak, to dotyczy xml, a nie json nie jest dla mnie tak ważne. – oligofren