Ich möchte mit Enunciate automatisch Dokumentation meiner REST-API generieren.Darf ich Java Interface als Datentypen verwenden?
Die JAX-RS kommentierten Code geht so etwas:
@POST
@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
public IAuthentication login(CLogin aLogin) throws XException {
return this.pManager.authenticate(aLogin);
}
IAuthentication
ist eine Schnittstelle, und es hat ein bleiben. Dies liegt daran, dass ich die Injektion verwende und den genauen Typ, der von der Methode authenticate()
zurückgegeben wird, nicht vorhersagen kann. CLogin
ist jedoch eine Klasse, und es ist in Ordnung, da es sich um eine Spezialisierung des Typs handelt, der authenticate()
akzeptiert.
Jetzt ist mein Problem, dass nur Request Body Dokument in der von Enunciate generierten Dokumentation ist, und nicht der Antworttext. Enunciate scheint Java-Schnittstellen zu ignorieren, wenn für mögliche Datentypen, mit der folgenden Meldung suchen:
[DEBUG] [enunciate] com.example.IAuthentication ist kein Potential Jackson Art, weil es keine Klasse ist oder eine Enumeration .
Meine Schnittstellen sind mit JAXB-Annotationen versehen. Sie sind vom Quellpfad aus zugänglich.
Gibt es eine Möglichkeit zu erkennen, dass Java-Schnittstellen als Datentypen OK sind und berücksichtigt werden müssen.
Nachtrag
Ein Beispiel aus der Praxis der JSON Ausgabe dieser Methode:
{
"token": "imec51lpb72lgsdrb0ftvfomt3",
"auth_key": ""
}
Können Sie versuchen, die Klassen annotieren, die die Schnittstelle mit den Jaxb-Annotationen implementiert? – karelss
tat ich. Eine Klasse '@XmlRootElement öffentliche Klasse CAuthentication implementiert IAuthentication' ist bereits vorhanden. Es wird in der Liste Datentyp angezeigt. Der Antworttext der Methode POST ist jedoch noch nicht dokumentiert. –
Welche Implementierung von Jaxb benutzt du, vielleicht Jackson? – karelss