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 Summary

    Modifier and Type
    Method
    Description
    afterBodyRead(Object body, org.springframework.http.HttpInputMessage inputMessage, org.springframework.core.MethodParameter parameter, Type targetType, Class<? extends org.springframework.http.converter.HttpMessageConverter<?>> converterType)
    Invoked third (and last) after the request body is converted to an Object.
    org.springframework.http.HttpInputMessage
    beforeBodyRead(org.springframework.http.HttpInputMessage inputMessage, org.springframework.core.MethodParameter parameter, Type targetType, Class<? extends org.springframework.http.converter.HttpMessageConverter<?>> converterType)
    Invoked second before the request body is read and converted.
    handleEmptyBody(Object body, org.springframework.http.HttpInputMessage inputMessage, org.springframework.core.MethodParameter parameter, Type targetType, Class<? extends org.springframework.http.converter.HttpMessageConverter<?>> converterType)
    Invoked second (and last) if the body is empty.
    boolean
    supports(org.springframework.core.MethodParameter methodParameter, Type targetType, Class<? extends org.springframework.http.converter.HttpMessageConverter<?>> converterType)
    Invoked first to determine if this interceptor applies.
  • Method Details

    • supports

      boolean supports(org.springframework.core.MethodParameter methodParameter, Type targetType, Class<? extends org.springframework.http.converter.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
    • beforeBodyRead

      org.springframework.http.HttpInputMessage beforeBodyRead(org.springframework.http.HttpInputMessage inputMessage, org.springframework.core.MethodParameter parameter, Type targetType, Class<? extends org.springframework.http.converter.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, org.springframework.http.HttpInputMessage inputMessage, org.springframework.core.MethodParameter parameter, Type targetType, Class<? extends org.springframework.http.converter.HttpMessageConverter<?>> converterType)
      Invoked third (and last) after the request body is converted to an Object.
      Parameters:
      body - set to the converter Object before the first 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
    • handleEmptyBody

      @Nullable Object handleEmptyBody(@Nullable Object body, org.springframework.http.HttpInputMessage inputMessage, org.springframework.core.MethodParameter parameter, Type targetType, Class<? extends org.springframework.http.converter.HttpMessageConverter<?>> converterType)
      Invoked second (and last) if the body is empty.
      Parameters:
      body - usually 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