编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

使用JSON和Jersey的Java RESTful Web服务

wxchong 2024-08-13 12:18:30 开源技术 31 ℃ 0 评论

我们会看到如何使用Jersey创建一个RESTful Web服务来产生JSON响应。 RESTful的Web服务可以配置为产生不同类型的响应,如XML,JSON,html,纯文本和大多数MIME类型。 本教程将引导您设置MIME类型来产生JSON响应。

@Produces 注解

我们可以使用@Produces注释为资源指定MIME类型表示。 例如,我们可以将mime类型指定为text / html作为@Produces(“text / html”)。 此@Produces注释可以在类级别和方法级别指定。 方法默认为类级注释,方法级注释将覆盖类级注释的值。

可以配置多个MIME类型,如下所示

@Produces({"application/xml", "application/json"})

当资源能够生成多种MIME类型时,则根据请求的Accept标头选择类型。 例如,accept头可以具有以下格式,

Accept: application/json

Accept头可以指定多个MIME类型,在这种情况下,会考虑accept头指定的首选项。 如果首选项相同,则选择@Produces注释中的第一个发生MIME类型作为响应。

Web服务中的JSON响应

要更改已经编写的Web服务以提供XML响应或创建一个新的Web服务,我们需要添加两件事。

  • 使用@Produces注释并添加MIME类型application / json。

  • 添加相关的JAR文件以产生JSON响应。

SEVERE: MessageBodyWriter not found for media type={application/json, q=1000}, type=class java.util.ArrayList, genericType=java.util.List<com.javapapers.webservices.rest.jersey.Animal>.

如果您没有添加相关的Jar文件来产生JSON响应,您将会得到上述错误。 应该添加Maven依赖项以生成JSON响应。

<dependency>
 <groupId>org.glassfish.jersey.media</groupId>
 <artifactId>jersey-media-moxy</artifactId>
 <version>2.17</version>
</dependency>

使用JSON示例的RESTful的Web服务

创建一个新的动态Web项目

转换为Maven项目

pom.xml 和 Maven 依赖

示例项目结构

完成上述操作后,我们将拥有如下的基本骨架结构,

从属Jar文件

当你有上面给出的pom.xml时,你应该得到下面的依赖关系。 出于某种奇怪的原因,如果您不使用Maven,则需要将以下JAR文件添加到应用程序lib类路径中。

带有JSON示例源代码的Java RESTful Web服务

ProductsResource.java

这个RESTful服务资源使用

@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}),我们已经通过Maven添加了依赖的JAR文件来生成JSON响应。 现在,如果此Web服务收到请求头Accept:application / json的请求,它将发出JSON响应。

ProductService.java

web.xml

Other Files

RESTful的Web服务客户端

我使用Chrome的扩展程序“Advanced Rest Client”来测试RESTful Web服务。 让我使用相同的REST客户端来测试本教程中给出的这个JSON Web服务。 我们需要添加一个带有请求的“标题”到Web服务。

JSON 响应

XML响应

相同的RESTful Web服务能够生成XML响应,因为我们在@Produces注释中也添加了XML MIME类型。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表