Как вы можете выборочно экспортировать PATCH, PUT и POST для @RestRepositoryResource?

Я знаю, что можно использовать аннотации для предотвращения экспорта определенных методов HTTP для данного репозитория, например:

@RepositoryRestResource
public interface AccountRepository extends PagingAndSortingRepository<Account, Long> {

    @Override
    @RestResource(exported = false)
    Account save(Account entity);
}

Если я правильно понял документацию, save сопоставляется с POST, PUT и PATCH. Можно ли выборочно запретить их экспорт по отдельности? Например, в этом случае я хочу разрешить PUT, но запретить POST.


person jdmunro    schedule 14.05.2015    source источник
comment
Итак, первый пункт: просто запустите код и сообщите нам, если он правильный, и метод сохранения действительно не экспортируется. Что касается выборочного предотвращения определенных типов запросов - просто переопределите метод и аннотируйте его разрешенными типами запросов.   -  person nKognito    schedule 14.05.2015
comment
Я знаю, что код работает, он не экспортирует его, а POST, PUT и PATCH не разрешены. Это мой вопрос, хотя - как вы делаете это выборочно? Я не уверен, какие аннотации использовать, чтобы запретить только определенные методы.   -  person jdmunro    schedule 15.05.2015


Ответы (1)


Это просто обходной путь, который заставляет вас переопределять автоматически сгенерированные методы CRUD (с помощью Spring Data REST) ​​с вашими собственными контроллерами:

    public class CrudController {
        @RequestMapping(value = "/save", method = {RequestMethod.POST, RequestMethod.PUT})
        public String save(Model uiModel) {
            // code here
        }
    }
person nKognito    schedule 18.05.2015