Die Situation RückkehrWie füge ich Typen in Jersey WADL während auch Reaktions
Ich habe ein Jersey 2,18 API-Endpunkt, der ein User
Objekt zurückgibt. Meine Stakeholder benötigen die API, um eine WADL-Datei zu generieren, die nicht nur den API-Pfad, sondern auch den zurückgegebenen Objekttyp widerspiegelt.
Dieser von Jersey aus der Box ab 2015 abgedeckt wird, indem Sie die folgende Endpunktdefinition:
@GET
@Path("/")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public User getExampleUser() {
User exampleUser = new User();
return exampleUser;
}
Die resultierende von Jersey erzeugt WADL Datei korrekt den Endpunkt enthält, sowie den Rückgabetyp:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 2.18 2015-06-05 02:28:21"/>
<doc xmlns:jersey="http://jersey.java.net/" jersey:hint="This is simplified WADL with user and core resources only. To get full WADL with extended resources use the query parameter detail. Link: http://localhost:8080/example/api/v3/application.wadl?detail=true"/>
<grammars>
<include href="application.wadl/xsd0.xsd">
<doc title="Generated" xml:lang="en"/>
</include>
</grammars>
<resources base="http://localhost:8080/example/api/v3/">
<resource path="/">
<method id="getExampleUser" name="GET">
<request>
</request>
<response>
<ns2:representation xmlns:ns2="http://wadl.dev.java.net/2009/02" xmlns="" element="user" mediaType="application/json"/>
<ns2:representation xmlns:ns2="http://wadl.dev.java.net/2009/02" xmlns="" element="user" mediaType="application/xml"/>
</response>
</method>
</resource>
</resources>
</application>
Aber die meisten der Gemeinde Jersey scheint Endpunkte zu haben ein allgemeineres Response
Objekt zurück, das für alle Arten von schönen Dingen bis einschließlich E-TAG caching, HTTP-Statuscode Manipulation erlaubt, error messaging und mehr.
Zum Beispiel:
@GET
@Path("/")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getExampleUser() {
User exampleUser = new User();
return Response.ok(exampleUser).build();
}
Die WADL erzeugt sieht gleich aus, aber der Antwortabschnitt zeigt jetzt keine Beweise für den Rückgabetyp und Schema.
<response>
<representation mediaType="application/json"/>
<representation mediaType="application/xml"/>
</response>
Meine Frage
Ist es möglich, aus den reichen automatisch generierte WADL Dateien profitieren und gleichzeitig auch in der Lage zu sein meine Endpunkte die flexiblere Response
Objekt zurück zu haben?
Wie kann ich alternativ Umleitung, Zwischenspeicherung und andere grundlegende API-Funktionen handhaben, während der spezifische Objekttyp immer noch von meiner Endpunktdefinition zurückgegeben wird?
yo slifty - haben Sie selbst eine Antwort gefunden? Ich habe nach dem gleichen gesucht. Vielen Dank! –