Interface RequestBodyAdvice

  • All Known Implementing Classes:
    JsonViewRequestBodyAdvice, RequestBodyAdviceAdapter

    public interface RequestBodyAdvice
    Allows customizing the request before its body is read and converted into an Object and also allows for processing of the resulting Object before it is passed into a controller method as an @RequestBody or an HttpEntity method argument.

    Implementations of this contract may be registered directly with the RequestMappingHandlerAdapter or more likely annotated with @ControllerAdvice in which case they are auto-detected.

    Since:
    4.2
    Author:
    Rossen Stoyanchev
    • Method Detail

      • supports

        boolean supports​(MethodParameter methodParameter,
                         Type targetType,
                         Class<? extends HttpMessageConverter<?>> converterType)
        Invoked first to determine if this interceptor applies.
        Parameters:
        methodParameter - the method parameter
        targetType - the target type, not necessarily the same as the method parameter type, e.g. for HttpEntity<String>.
        converterType - the selected converter type
        Returns:
        whether this interceptor should be invoked or not
      • handleEmptyBody

        Object handleEmptyBody​(Object body,
                               HttpInputMessage inputMessage,
                               MethodParameter parameter,
                               Type targetType,
                               Class<? extends HttpMessageConverter<?>> converterType)
        Invoked second (and last) if the body is empty.
        Parameters:
        body - set to null before the first advice is called
        inputMessage - the request
        parameter - the method parameter
        targetType - the target type, not necessarily the same as the method parameter type, e.g. for HttpEntity<String>.
        converterType - the selected converter type
        Returns:
        the value to use or null which may then raise an HttpMessageNotReadableException if the argument is required.
      • beforeBodyRead

        HttpInputMessage beforeBodyRead​(HttpInputMessage inputMessage,
                                        MethodParameter parameter,
                                        Type targetType,
                                        Class<? extends HttpMessageConverter<?>> converterType)
                                 throws IOException
        Invoked second before the request body is read and converted.
        Parameters:
        inputMessage - the request
        parameter - the target method parameter
        targetType - the target type, not necessarily the same as the method parameter type, e.g. for HttpEntity<String>.
        converterType - the converter used to deserialize the body
        Returns:
        the input request or a new instance, never null
        Throws:
        IOException
      • afterBodyRead

        Object afterBodyRead​(Object body,
                             HttpInputMessage inputMessage,
                             MethodParameter parameter,
                             Type targetType,
                             Class<? extends HttpMessageConverter<?>> converterType)
        Invoked third (and last) after the request body is converted to an Object.
        Parameters:
        body - set to the converter Object before the 1st advice is called
        inputMessage - the request
        parameter - the target method parameter
        targetType - the target type, not necessarily the same as the method parameter type, e.g. for HttpEntity<String>.
        converterType - the converter used to deserialize the body
        Returns:
        the same body or a new instance