Jersey REST api 多种资源

Posted

技术标签:

【中文标题】Jersey REST api 多种资源【英文标题】:Jersey REST api multiple resources 【发布时间】:2016-01-27 15:19:12 【问题描述】:

请参阅下面的代码。我可以访问 http://localhost:8080/messengerdemo/messages 并与所有 API 交互,但每次访问 http://localhost:8080/messengerdemo/profiles 时都会出现 404 not found 错误。我做错了什么?我是一个初学者,正在尝试学习球衣和 REST API。

web.xml

  <servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>org.learn.rest.messengerdemo.resources</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

消息资源

@Path("/messages")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MessageResource 
   MessageService messageService = new MessageService();

   @GET
   public List<Message> getMessages() 
      return messageService.getAllMessages();
   

个人资料资源。

@Path("/profiles")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class ProfileResource 

   private ProfileService profileservice = new ProfileService();

   @GET
   public List<Profile> getAllProfiles() 
      return profileservice.getAllProfiles();
   

【问题讨论】:

这两个资源都在这个包 org.learn.rest.messengerdemo.resources 下。 你正在使用哪个版本的球衣,你可以尝试使用'jersey.config.server.provider.classnames'参数来定义web.xml中的资源 下次请适当格式化代码。 【参考方案1】:

删除所有相关类并重新创建它们后。这一切都奏效了。

我猜这是因为我没有检查我的 REST 客户端工具中的 Content-Type 是否设置为 application/json

【讨论】:

以上是关于Jersey REST api 多种资源的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jersey 访问 REST 资源和静态资源

jersey rest post 访问为http 405 异常如何解决

Jersey REST GET 正在工作,但 PUT 没有。请求的资源不允许指定的 HTTP 方法

Jersey Rest服务类型

jersey rest web 服务与 Activemq 中间件集成

使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务