2016-05-12 6 views
0

Ich habe zwei Wege wie:Wie können wir den gleichen @Path aufrufen, der (@Produces) ein anderes Format zurückgibt?

@Path("Rectangle") 
    @GET 
    @Produces("application/xml") 
    @Consumes("application/xml") 

und

@Path("Rectangle") 
    @GET 
    @Produces("application/json") 
    @Consumes("application/xml") 

Wenn ich meine API auf localhost getroffen, ich die XML-Antwort immer erhalten. Was müsste ich tun, damit ich die JSON-Antwort für dieselbe @Path bekommen kann?

+0

Ändern Sie den Pfad oder ändern Sie den Verbrauch –

Antwort

4

gemäß den docs können Sie mehr Content-Typen für den gleichen Endpunkt

@Produces({"application/xml", "application/json"}) 

und basierte auf dem Request-Header Accept die Antwort angeben hat die am meisten akzeptierten Content-Type

so, Sie benötigen ein Verfahren und wie diese

@Path("Rectangle") 
@GET 
@Produces({"application/xml", "application/json"}) 
@Consumes("application/xml") 

jetzt der Client müssen den Header sendenaussehen solltemit dem Inhaltstyp, Beispiel erhalten sie wollen:

Accept: application/xml 

dies führt dazu, dass die Response-Header "Content-Type" sein content-type: application/xml

Sie können auch die Verwendung Accept Header zu formatieren Sie Ihre Antwort

+1

Dies sollte akzeptiert werden. Ich frage mich, 'User1650978' wird jedoch tun. –

+0

@JinKwon Ja, ich denke OP haben vergessen, dass: | – Yazan

+0

Sorry @ Yazan, jetzt akzeptiert! Vielen Dank! – 221b