Я пытаюсь проработать несколько руководств по quarkus, и у меня возникла проблема с созданием простой конечной точки REST. Я следую этому руководству: https://quarkus.io/guides/rest-data-panache.
Я использую подход из руководства для создания интерфейса, расширяющего PanacheEntityResource
public interface ActorResource extends PanacheEntityResource<Actor, Long>{
}
Соответствующая сущность:
@Entity
public class Actor extends PanacheEntity{
public String first_name;
public String last_name;
public Timestamp last_update;
public static List<Actor> findByFirstName(String name) {
return list("first_name", name);
}
}
Как и в руководстве, при выполнении этого действия автоматически генерируются базовые c конечные точки отдыха для getById, getAll, create, update и удалить. Как вы можете видеть в моем классе Entity, у меня есть метод findByFirstName, который получает все объекты, которые соответствуют заданному параметру "name" метода. Теперь я хочу предоставить конечную точку REST для этого метода. Я до сих пор нашел способ реализовать это, но это кажется неправильным. Мне не удалось реализовать конечную точку REST для метода непосредственно в интерфейсе.
@ResourceProperties(path = "actors")
public interface ActorResource extends PanacheEntityResource<Actor, Long>{
@GET
@Produces("application/json")
@Path("/first_name={name}")
public static List<Actor> getByFirstName(@PathParam("name") String name) {
return Actor.findByFirstName(name);
}
}
В этой реализации ошибок нет, но конечная точка REST не отображается. Как я уже сказал, я нашел способ сделать это, а именно создать интерфейс, как показано в первой скобке кода, без ничего в нем и в дополнение к этому классу ResourceClass, в котором я реализую свою настраиваемую конечную точку. Чтобы уменьшить беспорядок (в IDE), я объединил это, поэтому интерфейс создается внутри моего ResourceClass следующим образом (пример для другого объекта): * конечные точки отдыха генерируются автоматически, и внутри класса ресурсов я могу добавлять другие конечные точки, но мне кажется, что это неправильный подход. Я ошибаюсь, и я должен это делать именно так, или есть способ реализовать это только с помощью интерфейса, который изначально использовался в руководстве?