In certain situations (for example, when the service or its consumers are behind an overzealous corporate firewall, or if the main consumer is a web page), only the GET
and POST
HTTP methods might be available. In such a case, it is possible to emulate the missing verbs by passing a custom header in the requests.
For example, resource updates can be handled using POST
requests by setting a custom header (for example, X-HTTP-Method-Override
) to PUT
to indicate we are emulating a PUT
request via a POST
request. The following method will handle this scenario:
@RequestMapping(value = "/{roomId}", method = RequestMethod.POST, headers = {"X-HTTP-Method-Override=PUT"}) public ApiResponse updateRoomAsPost(@PathVariable("roomId") long id, @RequestBody RoomDTO updatedRoom) { return updateRoom(id, updatedRoom); }
By setting the headers
attribute on the mapping annotation, Spring request routing will intercept POST
requests with our custom header and invoke this method. Normal...