Über die @Produziert annotation, wie macht Jersey (JAX-RS) wissen, zur Behandlung von POJO als ein bestimmter mime-Typ?
Sehe ich eine Menge von Beispielen für Jersey, die in etwa so Aussehen:
public class ItemResource {
@GET
@Path("/items")
@Produces({"text/xml", "application/json"})
public List<Item> getItems() {
List<Item> items = new ArrayList<Item>();
Item item = new Item();
item.setItemName("My Item Name!");
items.add(item);
return items;
}
}
Aber ich habe dann Schwierigkeiten zerlegen Element, und wie Jersey, weiß, wie zu übersetzen, ein Element, um entweder XML oder JSON. Ich habe gesehen, sehr einfache Beispiele, die nur einen String zurückzugeben, der konstruierte HTML oder XML, das macht mehr Sinn für mich, aber mir fehlt der nächste Schritt. Ich schaute auf die Proben, und einer von Ihnen Stand (die json-von-jaxb-Beispiel), da wurde das Objekt markiert mit diese Arten von Anmerkungen:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"flight"
})
@XmlRootElement(name = "flights")
Ich bin auf der Suche nach tutorials, die diese "übersetzung" Schritt-für-Schritt, oder eine Erklärung hier zu übersetzen, wie ein POJO, um die Ausgabe als eine bestimmte mime-Typ. Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Dinge, die hier am Werk. Erstens, die Medien-Typen in @Erzeugt annotation verwendet werden, in der content-negotiation. Die media-Typen in der Wert des Accept-header, die vom client gesendet werden, im Vergleich zu denen in der @Produziert annotation und die am besten geeignete ausgewählt wird. Nehme an, dass ist text/xml in deinem Beispiel.
Beim erstellen des response-body Jersey intern versucht zu finden, ein MessageBodyWriter können wiederum Item-Objekte in text - /xml. In der Regel der Programmierer versorgt diese " mapper-Klassen, sondern für XML-und JSON-Jersey hat in MessageBodyReaders bereits für die Bequemlichkeit.
Das ist, warum es scheint, als ob es im Begriff war, auf etwas Magie.
Jan