Class NettyHttpRequest<T>
- Type Parameters:
T
- The type
- All Implemented Interfaces:
AttributeHolder
,MutableAttributeHolder
,HttpMessage<T>
,HttpRequest<T>
,NettyHttpRequestBuilder
,PushCapableHttpRequest<T>
,io.netty.util.AttributeMap
HttpRequest
instance.- Since:
- 1.0
- Author:
- Graeme Rocher
-
Field Summary
Fields inherited from class io.micronaut.http.netty.AbstractNettyHttpRequest
conversionService, httpMethod, httpMethodName, nettyRequest, uri
Fields inherited from interface io.micronaut.http.HttpRequest
SCHEME_HTTP, SCHEME_HTTPS
-
Constructor Summary
ConstructorDescriptionNettyHttpRequest
(io.netty.handler.codec.http.HttpRequest nettyRequest, io.netty.channel.ChannelHandlerContext ctx, ConversionService environment, HttpServerConfiguration serverConfiguration) -
Method Summary
Modifier and TypeMethodDescriptionfinal FormRouteCompleter
getAttribute
(CharSequence name) Obtain the value of an attribute on the HTTP method.AMutableConvertibleValues
of the attributes for this HTTP message.getBody()
<T1> Optional<T1>
getBody
(ArgumentConversionContext<T1> conversionContext) Return the body, will use the provided conversion context if needed.<T1> Optional<T1>
Return the body as the given type.io.netty.channel.ChannelHandlerContext
long
The request or response content type.io.netty.handler.codec.http.HttpRequest
Get the origin header.protected Charset
initCharset
(Charset characterEncoding) final boolean
final boolean
boolean
isSecure()
boolean
Check whether HTTP2 server push is supported by the remote client.mutate()
Returns a new request object that allows mutation.void
release()
Release and cleanup resources.protected void
releaseIfNecessary
(Object value) final ByteBody
rootBody()
serverPush
(HttpRequest<?> request) Initiate a HTTP2 server push for the given request.setAttribute
(CharSequence name, Object value) Sets an attribute on the message.toString()
Methods inherited from class io.micronaut.http.netty.AbstractNettyHttpRequest
accept, createDecoder, getCharacterEncoding, getLocale, getMethod, getMethodName, getNettyRequest, getParameters, getPath, getUri, isStream, toFullHttpRequest, toHttpRequest, toStreamHttpRequest
Methods inherited from class io.netty.util.DefaultAttributeMap
attr, hasAttr
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.micronaut.core.attr.AttributeHolder
getAttribute
Methods inherited from interface io.micronaut.http.HttpMessage
getBody, getCharacterEncoding
Methods inherited from interface io.micronaut.http.HttpRequest
accept, getCertificate, getLocale, getMethod, getMethodName, getParameters, getPath, getUri, getUserPrincipal, getUserPrincipal
Methods inherited from interface io.micronaut.core.attr.MutableAttributeHolder
removeAttribute
-
Constructor Details
-
NettyHttpRequest
public NettyHttpRequest(io.netty.handler.codec.http.HttpRequest nettyRequest, io.netty.channel.ChannelHandlerContext ctx, ConversionService environment, HttpServerConfiguration serverConfiguration) - Parameters:
nettyRequest
- TheHttpRequest
ctx
- TheChannelHandlerContext
environment
- The EnvironmentserverConfiguration
- TheHttpServerConfiguration
-
-
Method Details
-
rootBody
-
formRouteCompleter
-
mutate
Description copied from interface:HttpRequest
Returns a new request object that allows mutation.- Specified by:
mutate
in interfaceHttpRequest<T>
- Returns:
- The mutable request
-
getAttribute
Description copied from interface:AttributeHolder
Obtain the value of an attribute on the HTTP method.- Specified by:
getAttribute
in interfaceAttributeHolder
- Parameters:
name
- The name of the attribute- Returns:
- An
Optional
value
-
getHttpVersion
- Specified by:
getHttpVersion
in interfaceHttpRequest<T>
- Returns:
- The http version of the request.
-
toString
-
getNativeRequest
public io.netty.handler.codec.http.HttpRequest getNativeRequest()- Returns:
- Obtain a reference to the native Netty HTTP request
-
getChannelHandlerContext
public io.netty.channel.ChannelHandlerContext getChannelHandlerContext()- Returns:
- The
ChannelHandlerContext
-
getCookies
- Specified by:
getCookies
in interfaceHttpRequest<T>
- Returns:
- The
Cookies
instance
-
getRemoteAddress
- Specified by:
getRemoteAddress
in interfaceHttpRequest<T>
- Returns:
- Obtain the remote address
-
getServerAddress
- Specified by:
getServerAddress
in interfaceHttpRequest<T>
- Returns:
- Obtain the server address
-
getServerName
- Specified by:
getServerName
in interfaceHttpRequest<T>
- Returns:
- The server host name
-
isSecure
public boolean isSecure()- Specified by:
isSecure
in interfaceHttpRequest<T>
- Returns:
- Is the request an HTTPS request
-
getOrigin
Description copied from interface:HttpRequest
Get the origin header.- Specified by:
getOrigin
in interfaceHttpRequest<T>
- Returns:
- The origin header
- See Also:
-
getHeaders
- Specified by:
getHeaders
in interfaceHttpMessage<T>
- Returns:
- The
HttpHeaders
object
-
getAttributes
Description copied from interface:HttpMessage
A
MutableConvertibleValues
of the attributes for this HTTP message.Attributes are designed for internal data sharing and hence are isolated from headers and parameters which are client supplied
- Specified by:
getAttributes
in interfaceAttributeHolder
- Specified by:
getAttributes
in interfaceHttpMessage<T>
- Specified by:
getAttributes
in interfaceMutableAttributeHolder
- Returns:
- The attributes of the message
-
setAttribute
Description copied from interface:MutableAttributeHolder
Sets an attribute on the message.- Specified by:
setAttribute
in interfaceHttpMessage<T>
- Specified by:
setAttribute
in interfaceHttpRequest<T>
- Specified by:
setAttribute
in interfaceMutableAttributeHolder
- Parameters:
name
- The name of the attributevalue
- The value of the attribute- Returns:
- This message
-
getBody
- Specified by:
getBody
in interfaceHttpMessage<T>
- Returns:
- The request body
-
getBody
Description copied from interface:HttpMessage
Return the body as the given type.- Specified by:
getBody
in interfaceHttpMessage<T>
- Type Parameters:
T1
- The generic type- Parameters:
type
- The type of the body- Returns:
- An
Optional
of the type orOptional.empty()
if the body cannot be returned as the given type
-
getBody
Description copied from interface:HttpMessage
Return the body, will use the provided conversion context if needed.- Specified by:
getBody
in interfaceHttpMessage<T>
- Type Parameters:
T1
- The generic type- Parameters:
conversionContext
- The body conversion context- Returns:
- An
Optional
of the type orOptional.empty()
if the body cannot be returned as the given type
-
release
Release and cleanup resources. -
releaseIfNecessary
- Parameters:
value
- An object with a value
-
isServerPushSupported
public boolean isServerPushSupported()Description copied from interface:PushCapableHttpRequest
Check whether HTTP2 server push is supported by the remote client. Only HTTP2 clients that indicate support through HTTP2 settings have this method returntrue
.- Specified by:
isServerPushSupported
in interfacePushCapableHttpRequest<T>
- Returns:
true
iff server push is supported.
-
serverPush
Description copied from interface:PushCapableHttpRequest
Initiate a HTTP2 server push for the given request. The information from the given request (i.e. path, headers) will be passed on to the client immediately so that it does not send the request itself. Then, the given request will be handled as if it was initiated by the client, and the response will be passed back to the client.
This method mostly follows the semantics of JavaEE
javax.servlet.http.PushBuilder
. This means most of the headers of this request are copied into the push request, and the referer is set. To override this behavior, add a corresponding header to therequest
passed as the parameter of this method: those headers take precedence.Security note: The
Authorization
header and other headers not excluded by the above paragraph will be copied and sent to the client as part of a HTTP2PUSH_PROMISE
. Normally, this is fine, because the client sent those headers in the first place. But if there is an intermediate proxy that added a header, this header may then leak to the client.- Specified by:
serverPush
in interfacePushCapableHttpRequest<T>
- Parameters:
request
- The request to respond to using a server push.- Returns:
- This request.
-
initCharset
- Specified by:
initCharset
in classAbstractNettyHttpRequest<T>
- Parameters:
characterEncoding
- The charactger encoding- Returns:
- The Charset
-
isFormOrMultipartData
- Returns:
- Return true if the request is form data.
-
isFormData
- Returns:
- Return true if the request is form data.
-
getContentType
Description copied from interface:HttpMessage
The request or response content type.- Specified by:
getContentType
in interfaceHttpMessage<T>
- Overrides:
getContentType
in classAbstractNettyHttpRequest<T>
- Returns:
- The content type
-
getContentLength
public long getContentLength()- Specified by:
getContentLength
in interfaceHttpMessage<T>
- Returns:
- The value of the Content-Length header or -1L if none specified
-