我试图通过quarkus的一些教程,在创建一个简单的RESTendpoint时遇到了一个问题。下面是本教程:https://quarkus.io/guides/rest-data-panache。
Im使用指南中的方法创建扩展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);
}
}
@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);
}
}
@Path("/countries")
@ApplicationScoped
@Produces("application/json")
public class CountryResource {
@GET
@Path("/name={name}")
public List<Country> getByName(@PathParam("name") String name) {
return Country.findByName(name);
}
@ResourceProperties(path = "/countries")
public interface CountryResourceTest extends PanacheEntityResource<Country, Long>{
}
}
我认为直接向生成的资源类添加自定义endpoint还不受支持,因为这仍然是一个仅用于评估的试验性特性。在Quarkus的GitHub问题跟踪器中,可以随时给出问题反馈。
我认为添加自定义endpoint的最佳方法是创建具有相同路径的第二个资源类。然后您可以在那里定义您的自定义endpoint。如果您没有名称冲突,那么它将起作用。我使用hibernate-orm-panache-quickstart对其进行了测试,并修改了以下代码:
具有自定义查询得我得实体:
@Entity
@Cacheable
public class Fruit extends PanacheEntity {
@Column(length = 40, unique = true)
public String name;
public Fruit() {
}
public Fruit(String name) {
this.name = name;
}
public static Fruit findByName(String name) {
return find("name=?1", name).firstResult();
}
}
生成的rest-api的资源(在本教程中删除给定的资源):
public interface FruitResource extends PanacheEntityResource<Fruit, Long> {
}
我的特定资源:
@Path("fruit")
@ApplicationScoped
@Produces("application/json")
@Consumes("application/json")
public class FruitSpecificResource {
@GET
@Path("/first_name={name}")
public Fruit getByName(@PathParam("name") String name) {
return Fruit.findByName(name);
}
}
出于测试的目的,我还添加了openapi并用h2替换了postgres。以下是我的依赖项:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-orm-panache</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-h2</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-orm-rest-data-panache</artifactId>
</dependency>
quarkus.datasource.db-kind=h2
quarkus.datasource.jdbc.url=jdbc:h2:mem:test
quarkus.datasource.jdbc.max-size=8
quarkus.datasource.jdbc.min-size=2
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.sql-load-script=import.sql
好了,现在我可以启动quarkus:dev了,在localhost:8080/swagger-ui下面会有一个swagger-ui
新的endpoint就在那里。我手动测试过。它起作用了。
我目前正在开发一个尽可能尊重六边形架构原则的应用程序。 因此,我的“域”模块(组Id: ; 工件Id:)不依赖于任何技术框架。 我的所有服务都使用自定义注释(本身是我域的一部分)进行注释: 然而,在我的“Quarkus应用”模块(groupId:< code > acme ;artifact id:< code > app-quar kus ,我需要注入我的“域”模块中定义的服务(< code>a
null 我尝试将@priority(interceptor.priority.platform_beform)和@prematching也放入我的过滤器中,但即使是在OIDC启动后也会调用。 另外,是否有任何方法支持扩展quarkus oidc逻辑以包括自定义代码? 我无法获得oidc和keycloak-auth拦截器的优先级(知道这些可以帮助我决定过滤器的优先级)。请帮忙。
我是Quarkus新手,我编写了一个提供rest API的扩展,我们称之为。 其思想是,扩展将提供应用程序所需的rest资源,应用程序提供业务逻辑。 因此,我创建了一个Kwkus项目,该项目使用该扩展并提供了一个bean,该bean使用业务逻辑实现。 但是,当我启动应用程序时,不会创建endpoint,当我调用它时,它会返回。 问题是:如何使扩展中定义的rest资源对使用它的应用程序可见?
TL;dr:文档没有提到如何做到这一点,似乎也没有支持这一点的配置值(参见所有配置选项)。有没有一种定制日志附加器的方法? 对于测试应用程序,我喜欢评估日志消息。为此,您需要实现自己的日志附加器,将日志消息存储在某些数据结构中,然后配置您的日志后端,如果应用程序在测试上下文中运行,则额外使用此附加器。对于Logback,它只是一个 创建一个定制的日志附加器,但是不得不发现这也需要添加依赖项< co
假设我有一个名为的方法的接口,它接受了的参数。在中有名为和的字段。我想模拟调用此方法的响应,并返回不同的模拟响应结果,只要ServiceRequest中的值不同。 我有以下代码,如follow(参考https://www.baeldung.com/mockito-argument-matchers),但它返回空指针异常。这里出了什么问题?
我正在研究一个项目,其中上下文和会话由ThreadLocal使用ThreadPoolExecutor安全地管理(信息从线程传递到ThreadPoolExecutor内部的另一个线程)。 我们有: ThreadPoolExecutor:它实现beforeExecute和afterExecute方法行为,以确保信息从线程传递到另一个线程,并在afterExecutre方法中清除线程上下文。 Threa