Mit RestEasy kann ich eine @HeaderParam
, @PathParam
oder @QueryParam
Anmerkungen zu den Eigenschaften eines der eingehenden Objektparameter verwenden?Wie kann ich mit RestEasy eine @HeaderParam-Annotation für die Eigenschaften eines der eingehenden Objektparameter verwenden?
Dies ist meine Methode:
@Consumes(MediaType.APPLICATION_JSON)
@POST
@Path("/test/{testPathParam}")
@Produces(value = {MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN})
public Response test(
@HeaderParam("testHeaderParam") String testHeaderParam,
@QueryParam("testQueryParam") String testQueryParam,
@PathParam("testPathParam") String testPathParam,
TestInputBean testInputBean
) {
Logger.info(this, "testHeaderParam: ", testHeaderParam);
Logger.info(this, "testQueryParam: ", testQueryParam);
Logger.info(this, "testPathParam: ", testPathParam);
Logger.info(this, "testInputBean.getTestHeaderParam(): ", testInputBean.getTestHeaderParam());
Logger.info(this, "testInputBean.getTestQueryParam(): ", testInputBean.getTestQueryParam());
Logger.info(this, "testInputBean.getTestPathParam(): ", testInputBean.getTestPathParam());
Logger.info(this, "testInputBean.anotherParam(): ", testInputBean.anotherParam);
return null;
}
Dies wird TestInputBean
(deleted die Getter und Setter):
public class TestInputBean {
@HeaderParam("testHeaderParam")
String testHeaderParam;
@QueryParam("testQueryParam")
String testQueryParam;
@PathParam("testPathParam")
String testPathParam;
String anotherParam;
}
Dies ist die Anfrage ist:
Dies ist der Ausgang:
testHeaderParam: testHeaderParam-fromHeader
testQueryParam: testQueryParam-fromQuery
testPathParam: testPathParam-fromPath
testInputBean.getTestHeaderParam(): null
testInputBean.getTestQueryParam(): null
testInputBean.getTestPathParam(): null
testInputBean.anotherParam(): anotherParam-fromJson
Aber das ist, was ich will:
testHeaderParam: testHeaderParam-fromHeader
testQueryParam: testQueryParam-fromQuery
testPathParam: testPathParam-fromPath
testInputBean.getTestHeaderParam(): testHeaderParam-fromHeader
testInputBean.getTestQueryParam(): testQueryParam-fromQuery
testInputBean.getTestPathParam(): testPathParam-fromPath
testInputBean.anotherParam(): anotherParam-fromJson
Ist das möglich?
Ich weiß nicht, ob es mit RESTEasy funktioniert, aber mit Jersey würde '@ BeanParam' zum' TestInputBean' Methode Parameter funktionieren. Der Entity-Body sollte jedoch eine separate Objekteigenschaft innerhalb der Bean sein. Die JSON-Eigenschaften sollten nicht innerhalb der 'TestInputBean' liegen, sondern in einem separaten Objekt gekapselt sein. Ich sage, dass ich mit RESTEasy wegen des Entity Body nicht sicher bin. Ich weiß nicht, ob diese Unterstützung spezifisch für Jersey ist oder nicht. Sie können es versuchen, obwohl –
Ja, so testet ich nur mit RESTEeasy, und Sie können nicht die Entity-Bean in die '@ BeanParam' Bean. Am besten können Sie alle '@ XxxParam' Parameter in der '@ BeanParam' Bean finden, und einfach die Entity Bean als separaten Methodenparameter behalten. –
Ich habe nur alle testInputBean Eigenschaften außer dem Header entfernt, alle anderen entfernt Parameter von der Methode außer testInputBean, und entfernt alles außer dem Header aus der Anfrage. Und ich habe das Verb in GET geändert. Und ich habe "400: java.io.EOFException: Kein Inhalt zum Objekt aufgrund des Endes der Eingabe zugeordnet". Ich denke, es sieht ein Objekt und erwartet JSON. – mattalxndr