Class RestRequest
- All Implemented Interfaces:
jakarta.servlet.http.HttpServletRequest,jakarta.servlet.ServletRequest
The RestRequest object is an extension of the
The primary methods on this class are:
RestRequest- Methods for accessing the request content:
- Methods for accessing HTTP parts:
checkPreconditions(RestResponse)containsFormParam(String)containsHeader(String)containsQueryParam(String)getHeader(Class)getHeader(String)getHeaders()getFormParam(Class)getFormParam(String)getFormParams()getPathParam(Class)getPathParam(String)getPathParams()getPathRemainder()getQueryParam(Class)getQueryParam(String)getQueryParams()getQueryString()
- Methods for localization:
- Methods for accessing static files:
- Methods for assertions:
- Other:
getAttribute(String)getAttributes()getAuthorityPath()getMarshallingSession()getCharset()getConfig()getContext()getContextPath()getHttpServletRequest()getMethod()getOpContext()getOperationSwagger()getPartParserSession()getPartSerializerSession()getPathInfo()getProtocolVersion()getRequest(Class)getRequestLine()getRequestURI()getRequestURL()getServletPath()getSession()getSwagger()getUriContext()getUriResolver()isDebug()isDebugMarshalling()isPlainText()isUserInRole(String)setAttribute(String,Object)setCharset(Charset)setException(Throwable)setNoTrace()
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringRequest-attribute name under which the per-response Content-Security-Policy nonce is cached.Fields inherited from interface jakarta.servlet.http.HttpServletRequest
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH -
Method Summary
Modifier and TypeMethodDescriptionProvides the ability to perform fluent-style assertions on the response character encoding.Returns a fluent assertion for the request content.assertFormParam(String name) Returns a fluent assertion for the specified form parameter.assertHeader(String name) Returns a fluent assertion for the specified header.assertQueryParam(String name) Returns a fluent assertion for the specified query parameter.Returns an assertion on the request line returned bygetRequestLine().checkPreconditions(RestResponse response) Evaluates the conditional-request headers on this request against the response's currently-setETag andLast-Modified values.voidvoidLogs a formatted message with an associated throwable atCONFIG.booleancontainsFormParam(String name) Returnstrue if this request contains the specified header.booleancontainsHeader(String name) Returnstrue if this request contains the specified header.booleancontainsQueryParam(String name) Returnstrue if this request contains the specified header.voidvoidLogs a formatted message with an associated throwable atFINE.voidvoidLogs a formatted message with an associated throwable atFINER.voidvoidLogs a formatted message with an associated throwable atFINEST.getAttribute(String name) Returns the request attribute with the specified name.Request attributes.Returns the URI authority portion of the request.byte[]Returns the captured (bounded) request body bytes for debug logging.longReturns the total number of request body bytes read, including any beyond the capture cap.Returns the charset specified on theContent-Type header, or"UTF-8" if not specified.Config file associated with the resource.Request content.Returns the resource context handling the request.Returns the portion of the request URI that indicates the context of the request.Returns the exception thrown while processing this request, if any.Returns the total request execution time in milliseconds, if it has been recorded.<T> Optional<T>getFormParam(Class<T> type) Returns the request form-data parameter of the specified type.getFormParam(String name) Shortcut for callinggetFormParams().get(name) .Form-data.<T> Optional<T>Returns the request header of the specified type.getHeaderParam(String name) Returns the last header with a specified name of this message.Request headers.jakarta.servlet.http.HttpServletRequestReturns the wrapped servlet request.jakarta.servlet.ServletInputStreamReturns the HTTP content content as anInputStream.Returns the preferred Locale that the client will accept content in, based on the Accept-Language header.Returns the resolved per-operationRichLoggerfor this request.Returns theMarshallingSessionassociated with this request.getMessage(String key, Object... args) Shortcut method for callinggetMessages()andMessages.getString(String,Object...).Returns the resource bundle for the request locale.Returns the HTTP method of this request.Returns access to the innerRestOpContextof this method.Returns the localized OpenAPI 3.1 document associated with the resource.Returns the swagger for the Java method invoked.Returns the merged parser session property map for this request.Returns the part parser session associated with this request.Returns the part serializer session for this request.<T> Optional<T>getPathParam(Class<T> type) Returns the request path parameter of the specified type.getPathParam(String name) Shortcut for callinggetPathParams().get( .name )Path parameters.Shortcut for callinggetPathParams().getRemainder() .Returns the protocol version from the request line of this request.<T> Optional<T>getQueryParam(Class<T> type) Returns the request query parameter of the specified type.getQueryParam(String name) Shortcut for callinggetRequestQuery().getLast( .name )Query parameters.Returns the HTTP content content as aReader.<T> TgetRequest(Class<T> c) Creates a proxy interface to retrieve HTTP parts of this request as a proxy bean.<T> TSame asgetRequest(Class)but used on pre-instantiatedRequestBeanMetaobjects.<T> TgetRequest(RequestBeanMeta rbm, RequestBeanSetters setters) Same asgetRequest(RequestBeanMeta), but reuses setters already resolved when the@RestOp's arguments were built instead of resolving them on this call.Returns the correlation id resolved for this request (mint-or-honor), cached at session-build time.Returns the request line of this request.Returns the HTTP response associated with this request.Returns the merged serializer session property map for this request.Returns the part of this request's URL that calls the servlet.Returns the static files associated with the resource.Returns the localized swagger associated with the resource.Returns theTime-Zone header value on the request if there is one.Returns the URI for this request.Returns the URI context of the request.getUriResolver(UriResolution resolution, UriRelativity relativity) Returns a URI resolver that can be used to convert URIs to absolute or root-relative form.Request-level variable resolver session.voidvoidLogs a formatted message with an associated throwable atINFO.booleanisDebug()Log-level query only: returns whether this request's resolved (per-operation) JUL logger is loggable atFINE-or-finer.booleanReturns whether REST-driven serializer/parser debug behavior is enabled for this request's operation.booleanReturnstrue if&plainText=true was specified as a URL parameter.booleanisUserInRole(String role) voidsetAttribute(String name, Object value) Sets a request attribute.setAuthResult(AuthResult value) Sets the resolved resource-level authentication result.voidsetCharset(Charset value) Sets the charset to expect on the request content.Sets the"Exception" attribute to the specified throwable.Shortcut for callingsetNoTrace( .true )Sets the"NoTrace" attribute to the specified boolean.setParserSessionProperties(Map<String, Object> values) Sets multiple parser session properties programmatically.setParserSessionProperty(String name, Object value) Sets a parser session property programmatically.setSerializerSessionProperties(Map<String, Object> values) Sets multiple serializer session properties programmatically.setSerializerSessionProperty(String name, Object value) Sets a serializer session property programmatically.voidvoidLogs a formatted message with an associated throwable atSEVERE.toString()voidvoidLogs a formatted message with an associated throwable atWARNING.Methods inherited from class jakarta.servlet.http.HttpServletRequestWrapper
authenticate, changeSessionId, getAuthType, getCookies, getDateHeader, getHeader, getHeaderNames, getHeaders, getHttpServletMapping, getIntHeader, getPart, getParts, getPathInfo, getPathTranslated, getQueryString, getRequestedSessionId, getRequestURI, getRequestURL, getSession, getSession, getTrailerFields, isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL, isRequestedSessionIdValid, isTrailerFieldsReady, login, logout, newPushBuilder, upgradeMethods inherited from class jakarta.servlet.ServletRequestWrapper
getAsyncContext, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getLocalAddr, getLocales, getLocalName, getLocalPort, getParameter, getParameterMap, getParameterNames, getParameterValues, getProtocol, getProtocolRequestId, getRemoteAddr, getRemoteHost, getRemotePort, getRequest, getRequestDispatcher, getScheme, getServerName, getServerPort, getServletConnection, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, isWrapperFor, isWrapperFor, removeAttribute, setCharacterEncoding, setCharacterEncoding, setRequest, startAsync, startAsyncMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface jakarta.servlet.ServletRequest
getAsyncContext, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getLocalAddr, getLocales, getLocalName, getLocalPort, getParameter, getParameterMap, getParameterNames, getParameterValues, getProtocol, getProtocolRequestId, getRemoteAddr, getRemoteHost, getRemotePort, getRequestDispatcher, getScheme, getServerName, getServerPort, getServletConnection, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, removeAttribute, setCharacterEncoding, setCharacterEncoding, startAsync, startAsync
-
Field Details
-
CSP_NONCE_ATTR
Request-attribute name under which the per-response Content-Security-Policy nonce is cached.Set by
RestResponsewhen an emitted CSP header contains a nonce placeholder, and read by the serialization layer (to stamp the matchingnonce="..."on inline<script>/<style>tags) so the header and the markup share the same nonce.- See Also:
-
-
Method Details
-
assertCharset
Provides the ability to perform fluent-style assertions on the response character encoding.Examples:
// Validates that the response content charset is UTF-8. request .assertCharset().is("utf-8" );- Returns:
- A new fluent assertion object.
- Throws:
BasicHttpException- If REST call failed.
-
assertContent
Returns a fluent assertion for the request content.Example:
// Validates the request content contains "foo". request .assertContent().asString().is("foo" );- Returns:
- A new fluent assertion on the content, never
null .
-
assertFormParam
Returns a fluent assertion for the specified form parameter.Example:
// Validates the content type is JSON. request .assertFormParam("foo" ).asString().contains("bar" );- Parameters:
name- The query parameter name.- Returns:
- A new fluent assertion on the parameter, never
null .
-
assertHeader
Returns a fluent assertion for the specified header.Example:
// Validates the content type is JSON. request .assertHeader("Content-Type" ).asString().is("application/json" );- Parameters:
name- The header name.- Returns:
- A new fluent assertion on the parameter, never
null .
-
assertQueryParam
Returns a fluent assertion for the specified query parameter.Example:
// Validates the content type is JSON. request .assertQueryParam("foo" ).asString().contains("bar" );- Parameters:
name- The query parameter name.- Returns:
- A new fluent assertion on the parameter, never
null .
-
assertRequestLine
Returns an assertion on the request line returned bygetRequestLine().Example:
// Validates the request content contains "foo". request .assertRequestLine().protocol().minor().is(1);- Returns:
- A new assertion object.
-
checkPreconditions
Evaluates the conditional-request headers on this request against the response's currently-setETag andLast-Modified values.Implements the precondition-evaluation order defined by RFC 7232 §6:
If-Match — strong comparison; returns412 Precondition Failed on mismatch.If-Unmodified-Since — only consulted whenIf-Match is absent; returns412 Precondition Failed when the response'sLast-Modified is strictly after the supplied date.If-None-Match — weak comparison; returns304 Not Modified on match (for safe methods, per RFC 7232 §6).If-Modified-Since — only consulted whenIf-None-Match is absent; returns304 Not Modified when the response'sLast-Modified is at-or-before the supplied date.
Usage:
Set the response's
ETag and/orLast-Modified first, then call this method. The check reads the headers currently on the response, so any value set after the call is not considered.@RestGet ("/{id}" )public Order get(@Path long id , RestRequestreq , RestResponseres ) {var order =repo .find(id );res .eTag("\"" +order .version() +"\"" ).lastModified(order .updated());req .checkPreconditions(res ).ifPresent(e -> {throw e ; });return order ; }Notes:
- Returns an
Optionalso the caller controls how to handle the failure (throw inline, hand off to a logger, etc.). Both the returned304 and412 failures areBasicHttpExceptioninstances, which areRuntimeExceptions, soifPresent(e -> { throw e; })compiles cleanly. If-None-Match: * matches any presentETag ;If-Match: * fails only when noETag is set on the response.- Per RFC 7232 §3.1,
If-Match requires strong comparison: a weakETag on the response side never satisfies anIf-Match . - Per RFC 7232 §3.2,
If-None-Match uses weak comparison: the weak/strong flag is ignored when comparing tag values.
See Also:
- Parameters:
response- The response carrying the resource's currentETag and/orLast-Modified . Must not benull .- Returns:
- Empty if all preconditions pass; otherwise an
Optionalholding either a304 Not Modified BasicHttpException(when the request's cache copy is still fresh) or aPreconditionFailed(when anIf-Match /If-Unmodified-Since guard failed). - Throws:
IllegalArgumentException- Ifresponseisnull .
-
containsFormParam
Returnstrue if this request contains the specified header.- Parameters:
name- The header name.- Returns:
true if this request contains the specified header.
-
containsHeader
Returnstrue if this request contains the specified header.- Parameters:
name- The header name.- Returns:
true if this request contains the specified header.
-
containsQueryParam
Returnstrue if this request contains the specified header.- Parameters:
name- The header name.- Returns:
true if this request contains the specified header.
-
getAttribute
Returns the request attribute with the specified name.- Specified by:
getAttributein interfacejakarta.servlet.ServletRequest- Overrides:
getAttributein classjakarta.servlet.ServletRequestWrapper- Parameters:
name- The attribute name.- Returns:
- The attribute value, never
null .
-
getAttributes
Request attributes.Returns a
RequestAttributesobject that encapsulates access to attributes on the request.Example:
@RestPost (...)public Object myMethod(RestRequestreq ) {// Get access to attributes. RequestAttributesattributes =req .getAttributes();// Get a header value as a POJO. UUIDetag =attributes .get("ETag" , UUID.class ); }Notes:
- This object is modifiable.
- Values are converted from strings using the registered part parser on the resource class.
-
The
RequestAttributesobject can also be passed as a parameter on the method. -
The
@Attrannotation can be used to access individual attribute values.
See Also:
- Returns:
- The headers on this request.
Nevernull .
-
getAuthorityPath
Returns the URI authority portion of the request.- Returns:
- The URI authority portion of the request.
-
getMarshallingSession
Returns theMarshallingSessionassociated with this request.- Returns:
- The request bean session.
-
getCharset
Returns the charset specified on theContent-Type header, or"UTF-8" if not specified.- Returns:
- The charset to use to decode the request content.
-
getConfig
Config file associated with the resource.Returns a config file with session-level variable resolution. The config file is identified via
Rest.config().Example:
@RestGet (...)public void doGet(RestRequestreq ) {// Get config file. Configconfig =req .getConfig();// Get simple values from config file. int timeout =config .get("MyResource/timeout" ).asInteger().orElse(=10000);// Get complex values from config file. MyBeanbean =config .get("MyResource/myBean" ).as(MyBean.class ).orElse(null ); }Notes:
-
The
Configobject can also be passed as a parameter on the method.
See Also:
- Returns:
- The config file associated with the resource, or
null if resource does not have a config file associated with it.
-
The
-
getContent
Request content.Returns a
RequestContentobject that encapsulates access to the HTTP request content.Example:
@RestPost (...)public void doPost(RestRequestreq ) {// Convert content to a linked list of Person objects. List<Person>list =req .getContent().as(LinkedList.class , Person.class ); .. }Notes:
-
The
RequestContentobject can also be passed as a parameter on the method. -
The
@Contentannotation can be used to access the content as well.
See Also:
- Returns:
- The content of this HTTP request.
Nevernull .
-
The
-
getContext
Returns the resource context handling the request.Can be used to access servlet-init parameters or annotations during requests, such as in calls to
RestGuard.guard(RestRequest, RestResponse)..- Returns:
- The resource context handling the request.
-
getRequestId
Returns the correlation id resolved for this request (mint-or-honor), cached at session-build time.Delegates to
RestSession.getRequestId()— the synchronous, session-cached value, never a live public/custom-key attribute re-read. This is theX-Request-Idcorrelation id echoed on the response and carried in therequestIdlog-context field.- Specified by:
getRequestIdin interfacejakarta.servlet.ServletRequest- Overrides:
getRequestIdin classjakarta.servlet.ServletRequestWrapper- Returns:
- The resolved request id. Never
null (unless a custom id supplier returnednull ). - Since:
- 10.0.0
-
getContextPath
Returns the portion of the request URI that indicates the context of the request.The context path always comes first in a request URI. The path starts with a
"/" character but does not end with a"/" character. For servlets in the default (root) context, this method returns"" . The container does not decode this string.- Specified by:
getContextPathin interfacejakarta.servlet.http.HttpServletRequest- Overrides:
getContextPathin classjakarta.servlet.http.HttpServletRequestWrapper- Returns:
- The context path, never
null . - See Also:
-
HttpServletRequest.getContextPath()
-
getFormParam
Returns the request form-data parameter of the specified type.Type must have a name specified via the
FormDataannotation and a public constructor that takes in eithervalue orname,value as strings.- Type Parameters:
T- The bean type to create.- Parameters:
type- The bean type to create.- Returns:
- The parsed form-data parameter on the request, never
null .
-
getFormParam
Shortcut for callinggetFormParams().get(name) .- Parameters:
name- The form data parameter name.- Returns:
- The form data parameter, never
null .
-
getFormParams
Form-data.Returns a
RequestFormParamListobject that encapsulates access to form post parameters.Similar to
ServletRequest.getParameterMap(), but only looks for form data in the HTTP content.Example:
@RestPost (...)public void doPost(RestRequestreq ) {// Get access to parsed form data parameters. RequestFormParamListformParams =req .getFormParams();// Get form data parameters converted to various types. int p1 =formParams .get("p1" ).asInteger().orElse(0); Stringp2 =formParams .get("p2" ).asString().orElse(null ); UUIDp3 =formParams .get("p3" ).as(UUID.class ).orElse(null ); }Notes:
- This object is modifiable.
- Values are converted from strings using the registered part parser on the resource class.
-
The
RequestFormParamListobject can also be passed as a parameter on the method. -
The
@FormDAtaannotation can be used to access individual form data parameter values.
See Also:
- Returns:
- The URL-encoded form data from the request.
Nevernull . - Throws:
InternalServerError- If query parameters could not be parsed.- See Also:
-
getHeader
Returns the request header of the specified type.Type must have a name specified via the
Headerannotation and a public constructor that takes in eithervalue orname,value as strings.Typically any of the following:
AcceptAcceptCharsetAcceptEncodingAcceptLanguageAcceptRangesAuthorizationCacheControlClientVersionConnectionContentDispositionContentEncodingContentLengthContentTypeDateDebugExpectForwardedFromHostIfMatchIfModifiedSinceIfNoneMatchIfRangeIfUnmodifiedSinceMaxForwardsNoTraceOriginPragmaProxyAuthorizationRangeRefererTEThrownUpgradeUserAgentWarning
- Type Parameters:
T- The bean type to create.- Parameters:
type- The bean type to create.- Returns:
- The parsed header on the request, never
null .
-
getHeaderParam
Returns the last header with a specified name of this message.If there is more than one matching header in the message the last element of
getHeaders(String) is returned.
If there is no matching header in the message, an empty request header object is returned.Example:
// Gets a header and throws a BadRequest if it doesn't exist. request .getHeader("Foo" ) .assertValue().exists() .get();- Parameters:
name- The header name.- Returns:
- The request header object, never
null .
-
getHeaders
Request headers.Returns a
RequestHeaderListobject that encapsulates access to HTTP headers on the request.Example:
@RestPost (...)public Object myMethod(RestRequestreq ) {// Get access to headers. RequestHeaderListheaders =req .getRequestHeaders();// Add a default value. headers .addDefault("ETag" ,DEFAULT_UUID );// Get a header value as a POJO. UUID etag =headers .get("ETag" ).as(UUID.class ).orElse(null );// Get a standard header. Optional<CacheControl> =headers .getCacheControl(); }Notes:
- This object is modifiable.
- Values are converted from strings using the registered part parser on the resource class.
-
The
RequestHeaderListobject can also be passed as a parameter on the method. -
The
@Headerannotation can be used to access individual header values.
See Also:
- Returns:
- The headers on this request.
Nevernull .
-
getHttpServletRequest
Returns the wrapped servlet request.- Returns:
- The wrapped servlet request.
-
getInputStream
Returns the HTTP content content as anInputStream.Automatically handles GZipped input streams.
This method is equivalent to calling
getContent().getInputStream() .- Specified by:
getInputStreamin interfacejakarta.servlet.ServletRequest- Overrides:
getInputStreamin classjakarta.servlet.ServletRequestWrapper- Returns:
- The negotiated input stream.
- Throws:
IOException- If any error occurred while trying to get the input stream or wrap it in the GZIP wrapper.
-
getLocale
Returns the preferred Locale that the client will accept content in, based on the Accept-Language header.If the client request doesn't provide an
Accept-Language header, this method returns the default locale for the server.- Specified by:
getLocalein interfacejakarta.servlet.ServletRequest- Overrides:
getLocalein classjakarta.servlet.ServletRequestWrapper- Returns:
- The preferred Locale that the client will accept content in. Never
null .
-
getMessage
Shortcut method for callinggetMessages()andMessages.getString(String,Object...).- Parameters:
key- The message key.args- OptionalMessageFormat-style arguments.- Returns:
- The localized message.
-
getMessages
Returns the resource bundle for the request locale.Example:
@RestGet public String hello(RestRequestreq ,@Query ("user" ) Stringuser ) {// Return a localized message. return req .getMessages().getString("hello.message" ,user ); }Notes:
-
The
Messagesobject can also be passed as a parameter on the method.
See Also:
- Returns:
- The resource bundle.
Nevernull .
-
The
-
getMethod
Returns the HTTP method of this request.If
allowHeaderParams init parameter istrue , then first looks for&method=xxx in the URL query string.- Specified by:
getMethodin interfacejakarta.servlet.http.HttpServletRequest- Overrides:
getMethodin classjakarta.servlet.http.HttpServletRequestWrapper- Returns:
- The HTTP method of this request.
-
getOpContext
Returns access to the innerRestOpContextof this method.- Returns:
- The
RestOpContextof this method. May benull if method has not yet been found.
-
getOperationSwagger
Returns the swagger for the Java method invoked.- Returns:
- The swagger for the Java method as an
Optional. Nevernull .
-
getPartParserSession
Returns the part parser session associated with this request.- Returns:
- The part parser session associated with this request.
-
getPartSerializerSession
Returns the part serializer session for this request.- Returns:
- The part serializer session for this request.
-
getPathParam
Returns the request path parameter of the specified type.Type must have a name specified via the
Pathannotation and a public constructor that takes in eithervalue orname,value as strings.- Type Parameters:
T- The bean type to create.- Parameters:
type- The bean type to create.- Returns:
- The parsed path parameter on the request, never
null .
-
getPathParam
Shortcut for callinggetPathParams().get( .name )- Parameters:
name- The path parameter name.- Returns:
- The path parameter, never
null .
-
getPathParams
Path parameters.Returns a
RequestPathParamListobject that encapsulates access to URL path parameters.Example:
@RestGet ("/{foo}/{bar}/{baz}/*" )public void doGet(RestRequestreq ) {// Get access to path data. RequestPathParamListpathParams =req .getPathParams();// Example URL: /123/qux/true/quux int foo =pathParams .get("foo" ).asInteger().orElse(-1);// =123 Stringbar =pathParams .get("bar" ).orElse(null );// =qux boolean baz =pathParams .get("baz" ).asBoolean().orElse(false );// =true Stringremainder =pathParams .getRemainder().orElse(null );// =quux }Notes:
- This object is modifiable.
- Returns:
- The path parameters.
Nevernull .
-
getPathRemainder
Shortcut for callinggetPathParams().getRemainder() .- Returns:
- The path remainder value, never
null .
-
getProtocolVersion
Returns the protocol version from the request line of this request.- Returns:
- The protocol version from the request line of this request.
-
getQueryParam
Returns the request query parameter of the specified type.Type must have a name specified via the
Queryannotation and a public constructor that takes in eithervalue orname,value as strings.- Type Parameters:
T- The bean type to create.- Parameters:
type- The bean type to create.- Returns:
- The parsed query parameter on the request, never
null .
-
getQueryParam
Shortcut for callinggetRequestQuery().getLast( .name )- Parameters:
name- The query parameter name.- Returns:
- The query parameter, never
null .
-
getQueryParams
Query parameters.Returns a
RequestQueryParamListobject that encapsulates access to URL GET parameters.Similar to
ServletRequest.getParameterMap()but only looks for query parameters in the URL and not form posts.Example:
@RestGet (...)public void doGet(RestRequestreq ) {// Get access to query parameters on the URL. RequestQueryParamListquery =req .getQuery();// Get query parameters converted to various types. int p1/ =query .getInteger("p1" ).orElse(null ); Stringp2 =query .getString("p2" ).orElse(null ); UUIDp3 =query .get("p3" ).as(UUID.class ).orElse(null ); }Notes:
- This object is modifiable.
See Also:
- Returns:
- The query parameters as a modifiable map.
Nevernull .
-
getReader
Returns the HTTP content content as aReader.If
allowHeaderParamsinit parameter is true, then first looks for&content=xxxin the URL query string.Automatically handles GZipped input streams.
This method is equivalent to calling
getContent().getReader() .- Specified by:
getReaderin interfacejakarta.servlet.ServletRequest- Overrides:
getReaderin classjakarta.servlet.ServletRequestWrapper- Returns:
- The HTTP content content as a
Reader. - Throws:
IOException- If content could not be read.
-
getRequest
Creates a proxy interface to retrieve HTTP parts of this request as a proxy bean.Examples:
@RestPost ("/mypath/{p1}/{p2}/*" )public void myMethod(@Request MyRequestrequestBean ) {...}public interface MyRequest {@Path // Path variable name inferred from getter. String getP1();@Path ("p2" ) String getX();@Path ("/*" ) String getRemainder();@Query String getQ1();// Schema-based query parameter: Pipe-delimited lists of comma-delimited lists of integers. @Query ( collectionFormat="pipes" items=@Items ( items=@SubItems ( collectionFormat="csv" type="integer" ) ) )int [][] getQ3();@Header ("*" ) Map<String,Object> getHeaders();- Type Parameters:
T- The request bean interface to instantiate.- Parameters:
c- The request bean interface to instantiate.- Returns:
- A new request bean proxy for this REST request.
-
getRequest
Same asgetRequest(Class)but used on pre-instantiatedRequestBeanMetaobjects.- Type Parameters:
T- The request bean interface to instantiate.- Parameters:
rbm- The metadata about the request bean interface to create.
Must not benull .- Returns:
- A new request bean proxy for this REST request.
-
getRequest
Same asgetRequest(RequestBeanMeta), but reuses setters already resolved when the@RestOp's arguments were built instead of resolving them on this call.- Type Parameters:
T- The request bean interface to instantiate.- Parameters:
rbm- The metadata about the request bean interface to create.
Must not benull .setters- The pre-resolved constructor/setters for a concrete bean class, ornull to resolve them on this call (callers such asQueryablethat only have aClass, not a registeredRequestBeanArg). Resolving here throws the sameIllegalArgumentExceptionmessage asRequestBeanArg, wrapped the same way as any other exception from this method.- Returns:
- A new request bean proxy or instance for this REST request.
-
getRequestLine
Returns the request line of this request.- Returns:
- The request line of this request.
-
getResponse
Returns the HTTP response associated with this request.Only safe to call once the REST call has reached the point of invoking the matched Java method, e.g. from inside a
RestConverter, which only ever runs after method invocation. Calling it any earlier throwsInternalServerError.- Returns:
- The response associated with this request.
-
getServletPath
Returns the part of this request's URL that calls the servlet.This path starts with a
"/" character and includes either the servlet name or a path to the servlet, but does not include any extra path information or a query string.- Specified by:
getServletPathin interfacejakarta.servlet.http.HttpServletRequest- Overrides:
getServletPathin classjakarta.servlet.http.HttpServletRequestWrapper- Returns:
- The servlet path, never
null . - See Also:
-
HttpServletRequest.getServletPath()
-
getStaticFiles
Returns the static files associated with the resource.Shortcut for
RestContext.getStaticFiles().- Returns:
- The static files for this resource.
Nevernull .
-
getSwagger
Returns the localized swagger associated with the resource.A shortcut for calling
getInfoProvider().getSwagger(request); Example:
@RestGet public List<Tag> swaggerTags(RestRequestreq ) {return req .getSwagger().getTags(); }Notes:
-
The
Swaggerobject can also be passed as a parameter on the method.
See Also:
- Returns:
- The swagger associated with the resource.
Nevernull .
-
The
-
getOpenApi
Returns the localized OpenAPI 3.1 document associated with the resource.Sibling of
getSwagger()for the OpenAPI 3.1 emission path.See Also:
- Returns:
- The OpenAPI 3.1 document associated with the resource. Never
null .
-
getTimeZone
Returns theTime-Zone header value on the request if there is one.Example:
"GMT" .- Returns:
- The parsed header on the request, never
null .
-
getUri
Returns the URI for this request.Similar to
HttpServletRequestWrapper.getRequestURI()but returns the value as aURI. It also gives you the capability to override the query parameters (e.g. add new query parameters to the existing URI).- Parameters:
includeQuery- Iftrue include the query parameters on the request.addQueryParams- Augment the request URI with the specified query parameters.
Can benull (no additional parameters are added).- Returns:
- A new URI.
-
getUriContext
Returns the URI context of the request.The URI context contains all the information about the URI of the request, such as the servlet URI, context path, etc...
- Returns:
- The URI context of the request.
-
getUriResolver
- Returns:
- The URI resolver for this request.
-
getUriResolver
Returns a URI resolver that can be used to convert URIs to absolute or root-relative form.- Parameters:
resolution- The URI resolution rule.relativity- The relative URI relativity rule.- Returns:
- The URI resolver for this request.
-
getVarResolverSession
Request-level variable resolver session.Used to resolve SVL variables in text.
Example:
@RestGet public String hello(RestRequestreq ) {// Get var resolver session. VarResolverSessionsession = getVarResolverSession();// Use it to construct a customized message from a query parameter. return session .resolve("Hello $RQ{user}!" ); }Notes:
-
The
VarResolverSessionobject can also be passed as a parameter on the method.
See Also:
- Returns:
- The variable resolver for this request.
-
The
-
isDebug
Log-level query only: returns whether this request's resolved (per-operation) JUL logger is loggable atFINE-or-finer.This is read-only; there is no request attribute or setter driving it. It reports logging verbosity only and is not consulted by any framework behavior. Do not key security or marshalling behavior on this method — use the explicit, non-logging controls instead:
- Echo-endpoint reachability →
EchoMixin enablement. - Serializer/parser debug behavior →
isDebugMarshalling()/@Rest(debugMarshalling).
- Returns:
true if the resolved logger is loggable atFINE-or-finer.
- Echo-endpoint reachability →
-
getLogger
Returns the resolved per-operationRichLoggerfor this request.This is the same logger
isDebug()queries (`opContext.getLogger()`, delegating toRestOpContext.getLogger()), so anything logged through it — including thefine/info/… convenience methods below — rides the existing parent-chain capture propagation: aLogRecordCaptureattached at a resource-class-level logger name still observes these per-operation emissions.These convenience methods are for application handler code that wants to emit its own ad hoc log statements during request processing and have them automatically carry whatever
LogContextis active (most notablyrequestId). They are complementary to — not a replacement for — the REST debug pipeline's one cumulative per-request record; they produce independent, additionalLogRecords.- Returns:
- The resolved per-operation logger. Never
null .
-
severe
- Parameters:
pattern- TheFormatter-style message pattern.args- The message arguments.
-
severe
Logs a formatted message with an associated throwable atSEVERE.- Parameters:
thrown- The throwable to associate with the record.pattern- TheFormatter-style message pattern.args- The message arguments.
-
warning
- Parameters:
pattern- TheFormatter-style message pattern.args- The message arguments.
-
warning
Logs a formatted message with an associated throwable atWARNING.- Parameters:
thrown- The throwable to associate with the record.pattern- TheFormatter-style message pattern.args- The message arguments.
-
info
- Parameters:
pattern- TheFormatter-style message pattern.args- The message arguments.
-
info
Logs a formatted message with an associated throwable atINFO.- Parameters:
thrown- The throwable to associate with the record.pattern- TheFormatter-style message pattern.args- The message arguments.
-
config
- Parameters:
pattern- TheFormatter-style message pattern.args- The message arguments.
-
config
Logs a formatted message with an associated throwable atCONFIG.- Parameters:
thrown- The throwable to associate with the record.pattern- TheFormatter-style message pattern.args- The message arguments.
-
fine
- Parameters:
pattern- TheFormatter-style message pattern.args- The message arguments.
-
fine
Logs a formatted message with an associated throwable atFINE.- Parameters:
thrown- The throwable to associate with the record.pattern- TheFormatter-style message pattern.args- The message arguments.
-
finer
- Parameters:
pattern- TheFormatter-style message pattern.args- The message arguments.
-
finer
Logs a formatted message with an associated throwable atFINER.- Parameters:
thrown- The throwable to associate with the record.pattern- TheFormatter-style message pattern.args- The message arguments.
-
finest
- Parameters:
pattern- TheFormatter-style message pattern.args- The message arguments.
-
finest
Logs a formatted message with an associated throwable atFINEST.- Parameters:
thrown- The throwable to associate with the record.pattern- TheFormatter-style message pattern.args- The message arguments.
-
isDebugMarshalling
Returns whether REST-driven serializer/parser debug behavior is enabled for this request's operation.Resolved from the cascading
@Rest(debugMarshalling)/@RestOp(debugMarshalling)setting (default OFF), independent of the JUL logger level. When enabled, the REST layer forcesContext.debugon the serializer/parser session used to handle this request — engaging recursion-detection-that-throws, parse-input buffering, and stack-trace-prefixed marshalling exceptions.- Returns:
true if REST-driven marshalling debug is enabled for this operation.
-
getCachedContent
Returns the captured (bounded) request body bytes for debug logging.Populated by the two-phase debug pipeline only when the resolved logger is loggable at
FINEST; otherwise returnsnull . The captured copy is capped at the formatter's body cap (default 8 KB); usegetCachedContentLength()for the full byte count.- Returns:
- The captured request body bytes, or
null if body caching was not installed.
-
getCachedContentLength
Returns the total number of request body bytes read, including any beyond the capture cap.- Returns:
- The total request body length in bytes, or
-1if body caching was not installed.
-
getException
Returns the exception thrown while processing this request, if any.- Returns:
- The thrown exception, or
null if none occurred.
-
getExecTime
Returns the total request execution time in milliseconds, if it has been recorded.- Returns:
- The execution time in milliseconds, or
null if not yet recorded.
-
isPlainText
Returnstrue if&plainText=true was specified as a URL parameter.This indicates that the
Content-Type of the output should always be set to"text/plain" to make it easy to render in a browser.This feature is useful for debugging.
- Returns:
true if&plainText=truewas specified as a URL parameter
-
setAttribute
Sets a request attribute.- Specified by:
setAttributein interfacejakarta.servlet.ServletRequest- Overrides:
setAttributein classjakarta.servlet.ServletRequestWrapper- Parameters:
name- The attribute name.value- The attribute value.
-
setAuthResult
Sets the resolved resource-level authentication result.Invoked by the framework after the
RestAuthenticatorfold resolves an identity for this request. The stored result drivesgetUserPrincipal(),isUserInRole(String), andgetRemoteUser(), and (when a principal is present) stashes the principal under"juneau.principal"so@Authargument injection resolves it.- Parameters:
value- The result. Can benull to unset.- Returns:
- This object.
- Since:
- 10.0.0
-
getUserPrincipal
- Specified by:
getUserPrincipalin interfacejakarta.servlet.http.HttpServletRequest- Overrides:
getUserPrincipalin classjakarta.servlet.http.HttpServletRequestWrapper
-
isUserInRole
- Specified by:
isUserInRolein interfacejakarta.servlet.http.HttpServletRequest- Overrides:
isUserInRolein classjakarta.servlet.http.HttpServletRequestWrapper
-
getRemoteUser
- Specified by:
getRemoteUserin interfacejakarta.servlet.http.HttpServletRequest- Overrides:
getRemoteUserin classjakarta.servlet.http.HttpServletRequestWrapper
-
setSerializerSessionProperty
Sets a serializer session property programmatically.Session properties override context-level properties and can be used to customize serializer behavior for this request only.
- Parameters:
name- The property name (e.g."escapeSolidus").value- The property value.- Returns:
- This object.
-
setParserSessionProperty
Sets a parser session property programmatically.Session properties override context-level properties and can be used to customize parser behavior for this request only.
- Parameters:
name- The property name (e.g."trimStrings").value- The property value.- Returns:
- This object.
-
setSerializerSessionProperties
Sets multiple serializer session properties programmatically.- Parameters:
values- The properties to set. Can benull.- Returns:
- This object.
-
setParserSessionProperties
Sets multiple parser session properties programmatically.- Parameters:
values- The properties to set. Can benull.- Returns:
- This object.
-
getSerializerSessionPropertyMap
Returns the merged serializer session property map for this request.Merges (in order of increasing priority):
- Request attributes (from
getAttributes(), e.g.defaultRequestAttributes) - UON-encoded
juneauSerializerOptionsquery parameter - JSON5-encoded
X-Juneau-Serializer-Optionsheader - Programmatically-set properties via
setSerializerSessionProperty(java.lang.String, java.lang.Object)
Client-supplied keys are validated against the allowlist from
RestOpContext.getAllowedSerializerOptions(). Keys not in the allowlist cause a400 Bad Requestresponse.- Returns:
- An unmodifiable map of session properties; may be empty but never
null.
- Request attributes (from
-
getParserSessionPropertyMap
Returns the merged parser session property map for this request.Merges (in order of increasing priority):
- Request attributes (from
getAttributes(), e.g.defaultRequestAttributes) - UON-encoded
juneauParserOptionsquery parameter - JSON5-encoded
X-Juneau-Parser-Optionsheader - Programmatically-set properties via
setParserSessionProperty(java.lang.String, java.lang.Object)
Client-supplied keys are validated against the allowlist from
RestOpContext.getAllowedParserOptions(). Keys not in the allowlist cause a400 Bad Requestresponse.- Returns:
- An unmodifiable map of session properties; may be empty but never
null.
- Request attributes (from
-
setCharset
Sets the charset to expect on the request content.- Parameters:
value- The new charset to use for the request content.
Can benull (resets to the negotiated/default charset on the nextgetCharset()call).
-
setException
Sets the"Exception" attribute to the specified throwable.This exception is surfaced by the debug pipeline as the
thrownof the emitted log record.- Parameters:
t- The attribute value.- Returns:
- This object.
-
setNoTrace
Shortcut for callingsetNoTrace( .true )- Returns:
- This object.
-
setNoTrace
Sets the"NoTrace" attribute to the specified boolean.This flag tells the framework not to trace the current request: the access-log record for the call is still emitted, but without the exception's stack trace. A
No-Trace: true request header has the same effect; when both are present, the attribute wins.- Parameters:
b- The attribute value.- Returns:
- This object.
-
toString
-