Dies kann über Anfrage Filter für Sie getan werden. Dies ist meine Implementierung:
@Path("test")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class HelloResource {
private static final Logger log = Logger.getLogger(HelloResource.class);
@POST
@Path("/test")
public Response test(String body) {
Map<String, String> tmp = new HashMap<>();
tmp.put("test", "value");
return Response.ok(tmp).build();
}
}
Die Ressource zum Testen. Nimmt nur den Körper als eine Schnur.
Jetzt können Sie einen ContainerResponseFilter und einen ContainerRequestFilter registrieren.
Diese Filter werden vor und nach der Anfrage aufgerufen. Vorher wird der eingehende Körper gedruckt, danach wird der Antwortkörper gedruckt.
Es ist wichtig, beides nicht im Antwortfilter zu tun, da die Anfrageeinheit Stream zum Zeitpunkt der Ausführung des Antwortfilters geschlossen ist.
Das ist, wenn Sie Ihre Körper, z. wie folgt:
Ich benutze Apache-Commons, um den Request Stream in einen String zu lesen.
Für meine JSON-Datei, wie die Suche:
[email protected]:~/tmp/test$ cat 1.json
{
"eventType": 1,
"params": {
"field1" : 10
}
}
ich eine Locke machen, wie folgt aussehen:
[email protected]:~/tmp/test$ curl -XPOST "localhost:9085/api/test/test" -H "Content-Type: application/json" --data @1.json
{"test":"value"}
Welche meiner Konsole gedruckt wird:
request body: { "eventType": 1, "params": { "field1" : 10 }}
Response body: {test=value}
Das ist offensichtlich nur eine von vielen Lösungen. Dies würde für alle Json-Inhaltstypen funktionieren (und ehrlich gesagt, die meisten anderen Inhaltstypen, die ich auch erwarten würde).
Hoffnung, dass
Artur
Für die Wieder json 'Rückkehr Response.ok (returnedJsonString, MediaType.APPLICATION_JSON) .build() hilft,' –
Sie haben meine Anforderung falsch verstanden. Ich möchte die JSON-Anforderungen, die von den Clients kommen, ausdrucken und die JSON-Antworten, die an die Clients zurückgegeben werden, ausdrucken. Wenn der Client beispielsweise {"x": "123"} gesendet hat, möchte ich diese genaue Zeichenfolge zum Zweck der Fehlerbehebung ausgeben können. – user3573403