Есть ли способ использовать пользовательские методы Google с ресурсами Джерси? - PullRequest
1 голос
/ 11 марта 2019

Я искал способ сделать API-интерфейсы JAX-RS более удобочитаемыми и использовал метод пользовательских методов Google:

https://cloud.google.com/apis/design/custom_methods

Я искал это, потому что некоторые измои сущности выполняют больше действий, чем я мог выразить с помощью традиционных HTTP-глаголов.Шаблон Google должен использовать двоеточие (:) в конце URI, отделяя сущность / коллекцию от желаемого действия.

Я пытался применить этот шаблон к простому ресурсу Джерси, просто чтобы проверитькак это можно сделать.У меня есть класс ресурсов StudentDetailsResource, аннотированный @Path("students/{studentId}"), и несколько методов, также аннотированных @Path.

Если у моего метода есть другая сущность до пользовательского метода, то все в порядке.Допустим, метод регистрации помечен @Path("subjects/{subjectId}:enroll").

Проблема возникает, когда действие выполняется сразу после URI класса ресурсов, поскольку @Path использует шаблон URI, который prefixWithSlash всех подресурсов.Поэтому, если у меня есть метод отсева, аннотация будет выглядеть как @Path(":dropout"), но шаблон URI станет /students/{studentId}/:dropout, а this /: прервется в фазе сопоставления.

Я читал о ДжерсиПоставщики и ResourceDelegates, но я не смог найти способ заменить действие шаблона URI по умолчанию prefixWithSlash.

Вопрос: как применить подход пользовательского метода Google или как избежать использования по умолчанию prefixWithSlash поведение с Джерси?

Примечание: я знаю, что это глупый пример, и есть другие способы решения этого конкретного случая, но у меня есть более сложные случаи, которые могут извлечь выгоду из пользовательских методов.

...