2016-07-27 27 views
0

Ich arbeite an einer REST-API. Dieses Beispiel funktioniert hier gut, bin aber wirklich verwirrt über etwas hier. Meine Methode getAll gibt einen String zurück, aber die Methode wurde mit Produce MIME MediaType von JSON versehen. Meine Frage ist, ist die letzte Antwort (doc) ein JSONObject oder nur eine JSON-String (also ein String im JSON-Format). Damit ich weiß, wie ich mit der Antwort umgehen soll, wenn ich sie bekomme.javax.ws.rs: Was tatsächlich von einer Methode zurückgegeben wird

@Path("/membership/{pageNumber}") 
    @GET 
    @Produces("application/json") 
    public String getAll(@PathParam("pageNumber") String pageNumber){ 

     Map<String , String > params = new HashMap<>(); 
     String doc = HTTPClient.sendGet("localhost:9500/users/list/membership/field/" 
         +pageNumber, params, 60); 

     return doc; 
    } 

Dies wird mir auch in meiner Dokumentation wirklich helfen. Alle Bemühungen sind willkommen, Danke.

Antwort

2

Meine Frage ist, ist die letzte zurückgegebene Antwort (doc) ein JSONObject oder nur ein JSON-String (also ein String im JSON-Format)

Ja, es wird wieder die json String, Wenn Sie JSON- und HTTP-Status zusammen senden möchten, können Sie Response als Rückgabetyp verwenden.

Beispiel:

@GET 
@Path("/testGet") 
@Produces("application/json") 
public Response testGet() { 
    String json = //Create JSON String 
    return Response.ok(json, MediaType.APPLICATION_JSON).build(); 
} 
+0

Wird die Response.ok versuchen (..... –

+0

Bitte die Antwort, welche Bibliothek tut es gehört, weil es nicht für die Arbeit Die Bibliotheken importieren –

+0

Es ist [Jax-Rs] (https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api/2.0) –

1

Was ist eigentlich durch eine Methode

Retour ist genau das, was Sie zurückkommen. Das ist Java. So funktioniert Java. Es gibt keinen magischen Voodoo.


Vielleicht fragen Sie sich etwas anderes.

Alle Antworten werden in den Antwort-Ausgabestream geschrieben. Es spielt keine Rolle, was der Rückgabetyp ist. Was zählt ist, dass es eine MessageBodyWriter gibt, die weiß, wie man diesen Typ basierend auf dem Inhaltstyp @Produces in den Ausgabestream schreibt. Wenn der Rückgabetyp ein String ist, muss ein Writer vorhanden sein, der weiß, wie er mit der String-application/json Kombination umgehen soll. Wenn der Rückgabetyp ist, dann muss es einen Schreiber geben, der behandelt, dass.

Siehe auch:JAX-RS Entity Providers

Der Kunde braucht nichts über alle Java-Typen kennen (das heißt Sting, JSONObect, etc). Er erhält die Daten als Bytestrom und konvertiert die Daten mit der von ihm verwendeten Konvertierungsmethode.

+0

Danke für diese Information –

1

Sie erzeugen schließlich eine JSON-Zeichenfolge.

Statt String nur der Rückkehr ist es empfehlenswert, Entity zu verwenden

return Response.ok().entity(doc).build(); 
+0

die zurückgegebene Anweisung, die Sie angegeben, gibt auch eine JSON-Zeichenfolge zurück? –

+0

Vielen Dank, wirklich zu schätzen wissen –