我们会看到如何使用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类型。
本文暂时没有评论,来添加一个吧(●'◡'●)