gpt4 book ai didi

java - 使用 Jersey 2 的 REST API

转载 作者:行者123 更新时间:2023-11-30 08:27:53 24 4
gpt4 key购买 nike

我想使用 Jersey 2 实现一个 REST API,我想将资源分成接口(interface)及其实现,例如:

@Path("hello")
public interface HelloLogic {
@GET
@Produces("application/json")
public String hello();
}

public class HelloLogicResource implements HelloLogic {
public String hello() {
return "{\"reply\": \"Hello\"}";
}
}

虽然我没有任何运气来公开资源。对于刚刚提到的 hello 资源,我希望以下内容就足够了:

public class MyApplication extends ResourceConfig {
public MyApplication() {
register(new MyApplicationBinder());
}
}

public class MyApplicationBinder extends AbstractBinder {
@Override
protected void configure() {
bind(HelloLogic.class).to(HelloLogicResource.class);
}
}

web.xml:

<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>stines.api.MyApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

pom.xml:

<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.4.1</version>
</dependency>

但是打的时候

http://localhost:8080/hello

我收到 404 响应:

我们将不胜感激 :) 谢谢。


新发现:它适用于:

public class MyApplication extends ResourceConfig {
public MyApplication() {
registerClasses(HelloLogicResource.class);
}
}

最佳答案

编辑 1:您需要告诉 Jersey 您的资源在哪里:

public MyApplication() {
packages("stines.api.resources");
register(new MyApplicationBinder());
}

我相信在这种情况下你想使用 HelloLogic 所在的包,但如果需要你也可以添加多个包:

public MyApplication() {
packages("stines.api.resources;stines.api.resources.impl");
register(new MyApplicationBinder());
}

编辑 2: 删除了关于向后 Guice 绑定(bind)的注释

关于java - 使用 Jersey 2 的 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20564142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com