Как я могу выдать 405 для всех методов HTTP, которые не определены на моем контроллере при весенней загрузке?

Мне нужно выдать 405 для всех методов http, которые не определены в моем контроллере. Я использую весеннюю загрузку, есть ли общий способ написать его, чтобы мне не нужно было добавлять метод на моем контроллере для чтения всех методов HTTP, в настоящее время я не получаю никакого ответа, но он выдает 200 OK. Ниже мой контроллер, который имеет только GET и PUT. Я хочу бросить 405 для всех других методов.

@RestController("CardController")
@RequestMapping("/user/v1")
public class CardController {

@Autowired
ICardService iCardService;

@RequestMapping(value = "/{cardHolderId}/cards", produces = "application/json; charset=utf-8", method = RequestMethod.GET)
@ResponseBody
public AllCardsVO getCards(@PathVariable("cardHolderId") final String id) {
    return jsonObj;
}

@RequestMapping(value = "/{cardHolderId}/cards/{cardId}", produces = "application/json; charset=utf-8", method = RequestMethod.GET)
@ResponseBody
public CardVO getCard(@PathVariable("cardHolderId") final String cardHolderId,
        @PathVariable("cardId") final String cardId){
    return jsonObj;
}

@RequestMapping(value = "/{cardHolderId}/cards/{cardId}", produces = "application/json; charset=utf-8", method = RequestMethod.PUT)
@ResponseBody
public CardVO putCard(@PathVariable("cardHolderId") final String cardHolderId,
        @PathVariable("cardId") final String cardId, @RequestBody final RequestVO requestVO) {
    return jsonObj;
}

Это то, что я написал в контроллере, но это не работает для PATCH.

@RequestMapping(value = "/**", produces = "application/json; charset=utf-8", method = { RequestMethod.OPTIONS,
        RequestMethod.DELETE, RequestMethod.PATCH, RequestMethod.POST })
@ResponseBody
public void options(HttpServletResponse response) {

    throw new MethodNotAllowedException();

}

Есть ли общий способ, которым я могу сделать это при весенней загрузке, какое-то переопределение конфигурации или служба, имеющая этот метод в каждом контроллере API, не кажется правильным. ЕСЛИ это единственный способ, как заставить PATCH работать. Я получаю ответ для PATCH, хотя у меня это не определено.

Любая помощь приветствуется.


person Grinish Nepal    schedule 11.01.2016    source источник
comment
Почему бы не жить со стандартом 404?   -  person Marged    schedule 12.01.2016
comment
Бизнес-требование .... также я получаю 200 OK для некоторых с пустым ответом, а не 404 без кода, который я написал в контроллере.   -  person Grinish Nepal    schedule 12.01.2016
comment
Я думаю, это поведение по умолчанию. Spring Boot автоматически вернет 405   -  person Ali Dehghani    schedule 12.01.2016
comment
Вы должны получить 405 по крайней мере для любого другого метода, кроме OPTIONS. Если вы этого не сделаете, у вас, вероятно, есть что-то в конфигурации вашего приложения, что влияет на это. Что касается запроса OPTIONS, если вы хотите отключить обработку запросов OPTIONS, см. следующий вопрос: stackoverflow.com/questions/33331042/   -  person dunni    schedule 12.01.2016
comment
@dunni Я думаю, что все остальное, кроме PATCH и OPTIONS по умолчанию, дает мне 405. Любые предложения по PATCH, я получаю ответ с 200OK, также с переопределением диспетчерского сервлета я получаю 200 ok для опций с пустым ответом.   -  person Grinish Nepal    schedule 19.01.2016