@Request
The {@link oaj.http.annotation.Request @Request} annotation can be applied to a parameter interface type of a @RestMethod-annotated method
to identify it as an interface for retrieving HTTP parts through a bean-like interface.
- {@link oaj.http.annotation.Request}
- {@link oaj.http.annotation.Request#partParser() partParser} - Override the part parser.
@RestMethod(path="/pets/{petId}")
public void putPet(UpdatePet updatePet) {...}
@Request
public interface UpdatePet {
@Path
int getPetId();
@Query(name="verbose")
boolean isDebug();
@Header("*")
Map<String,Object> getAllHeaders();
@Body
Pet getPet();
}
The example above is identical in behavior to specifying individual annotated parameters on the @RestMethod-annotated method:
@RestMethod(path="/pets/{petId}")
public void putPet(
@Path("petId") int petId,
@Query("verbose") boolean debug,
@Header("*") Map<String,Object> allHeaders,
@Body Pet pet
)
{...}
The return types of the getters must be the supported parameter types for the HTTP-part annotation used.
Schema-based serialization and parsing is used just as if used as individual parameter types.
Annotations used are the exact same used on REST parameters and have all the
same feature support including automatic Swagger validation and documentation.
@Request
public interface Request {
// Schema-based query parameter: Pipe-delimited lists of comma-delimited lists of integers.
@Query(
collectionFormat="pipes"
items=@Items(
items=@SubItems(
collectionFormat="csv"
type="integer",
minimum=1,
maximum=100
),
maximumLength=10
)
)
int[][] getPipedCdlInts();
}
For clarity, the @Request annotation can be defined on the parameter, class, or both.
@RestMethod(path="/pets/{petId}")
public void putPet(@Request UpdatePet updatePet) {...}
@Request
public interface UpdatePet {...}