Return HTTP 204 on null with spring @RestController

前端 未结 7 2027
旧时难觅i
旧时难觅i 2020-12-25 12:10

This returns 200 OK with Content-Length: 0

@RestController
public class RepoController {
    @RequestMapping(value = \"/document/{id}\", method = RequestMeth         


        
7条回答
  •  不知归路
    2020-12-25 12:48

    I solved this problem with a filter. It's global and simple.

    package your.package.filter;
    
    import org.springframework.http.HttpStatus;
    import org.springframework.web.filter.OncePerRequestFilter;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class NoContentFilter extends OncePerRequestFilter {
    
        @Override
        protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
            filterChain.doFilter(httpServletRequest, httpServletResponse);
            if (httpServletResponse.getContentType() == null ||
                    httpServletResponse.getContentType().equals("")) {
                httpServletResponse.setStatus(HttpStatus.NO_CONTENT.value());
            }
        }
    }
    

    and add the following in your web.xml

    
        restNoContentFilter
        your.package.filter.NoContentFilter
    
    
    
        restNoContentFilter
        /rest/*
    
    

提交回复
热议问题