Support "Accept-Patch" for unsupported media type
This commit introduces support in both servlet and webflux for the "Accept-Patch" header, which is sent when the client sends unsupported data in PATCH requests. See section 2.2 of RFC 5789. Closes gh-26759
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -231,6 +231,12 @@ public abstract class ResponseEntityExceptionHandler {
|
||||
List<MediaType> mediaTypes = ex.getSupportedMediaTypes();
|
||||
if (!CollectionUtils.isEmpty(mediaTypes)) {
|
||||
headers.setAccept(mediaTypes);
|
||||
if (request instanceof ServletWebRequest) {
|
||||
ServletWebRequest servletWebRequest = (ServletWebRequest) request;
|
||||
if (HttpMethod.PATCH.equals(servletWebRequest.getHttpMethod())) {
|
||||
headers.setAcceptPatch(mediaTypes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return handleExceptionInternal(ex, null, headers, status, request);
|
||||
|
||||
@@ -281,6 +281,9 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
|
||||
List<MediaType> mediaTypes = ex.getSupportedMediaTypes();
|
||||
if (!CollectionUtils.isEmpty(mediaTypes)) {
|
||||
response.setHeader("Accept", MediaType.toString(mediaTypes));
|
||||
if (request.getMethod().equals("PATCH")) {
|
||||
response.setHeader("Accept-Patch", MediaType.toString(mediaTypes));
|
||||
}
|
||||
}
|
||||
response.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
|
||||
return new ModelAndView();
|
||||
|
||||
Reference in New Issue
Block a user