我是使用CXF和Spring制作RESTful Web服务的新手。该项目处于Maven控制之下。
我有一个Android应用程序,它想连接到服务器,以通过RESTful网络服务检索书籍信息和封面图片。 RESTful服务是否可以(以及如何)返回图像?
项目浏览器
Project
--Java Resource
----src/main/java
------library.service
--------IBook.java
--------Book.java
----images
------Cover1.png
------Cover2.png
--JavaResources
--Deployed Resources
----webapp
------WEB-INF
----web-resources
iBook.java接口
@GET
@Path("/book/cover/{name}")
@Produces("image/png")
public Image getImage(@PathParam("name") String name);
Book.java展示
public Image getImage(String name){
//How should I get cover png from 'images' folder and return it??
}
谢谢
西尔维斯特·庞
最佳答案
您可以通过Response.ok(params ...)。build()返回您选择的图像
将您的IBook.java更改为
@GET
@Path("/book/cover/{name}")
@Produces("image/*")
public Response getImage(@PathParam("name") String name);
还有您的实现接口。
public Response getImage(String name){
File file = new File(fileUrl);
String mediaType = SomeContentTypeMapHere(file)
return Response.ok(file,mediaType).build()
}
编辑
当调用方法处理程序时,我们已使用
Response.ok(Object type, String mediaType).build()
生成并返回Response。第一个参数是一个对象。认为这是当某人/某人在给定的url上发送请求时我们将要发送的东西,而mediaType基本上是我们要内容的内容类型(例如,“ image / png,image / jpg等”)发送。请记住将
@Produces("image/*")
与您通过ok(Object entity, String mediaType
方法传递的内容类型进行匹配。