Java Jersey:需要生成imageurl而不是图像
我正在本地主机8080上运行我的服务器。我想制作一份与之相关的餐厅列表。我正在本地驱动器中上载带有Id的图像。我的上传状态是:Java Jersey:需要生成imageurl而不是图像,java,spring,rest,jersey,Java,Spring,Rest,Jersey,我正在本地主机8080上运行我的服务器。我想制作一份与之相关的餐厅列表。我正在本地驱动器中上载带有Id的图像。我的上传状态是: { "uploadstatus": "C:/data/5731453cf1a60921d4d1b8b8oracle.JPG" } 当我把它作为一个列表时,我从我的控制器中找到了这些 { "total": 1, "list": [ { "id": "5731453cf1a60921d4d1b8b8", "name": "Kua
{
"uploadstatus": "C:/data/5731453cf1a60921d4d1b8b8oracle.JPG"
}
当我把它作为一个列表时,我从我的控制器中找到了这些
{
"total": 1,
"list": [
{
"id": "5731453cf1a60921d4d1b8b8",
"name": "Kualalam",
"address": "kkkk",
"restaurantImage": "C:/data/5731453cf1a60921d4d1b8b8oracle.JPG",
"review": null
}
]
}
下面是我用来获取响应的代码:
@GET
@Produces("application/json")
public Response list() {
Map<Object, Object> apiResponse = new HashMap<Object, Object>();
Map<Object, Object> serviceResponse = new HashMap<Object, Object>();
try {
List<Restaurant> restaurants = restaurantService.list();
serviceResponse.put("total", restaurants.size());
serviceResponse.put("list", restaurants);
return Response.ok(serviceResponse).build();
} catch (Exception e) {
logger.error("Error in getting restaurants list:", e);
apiResponse.put("error", e.getMessage());
}
return Response.status(500).entity(apiResponse).build();
}
@GET
@生成(“应用程序/json”)
公众回应名单({
Map apiResponse=new HashMap();
Map serviceResponse=新建HashMap();
试一试{
List restaurants=restaurantService.List();
servicesponse.put(“total”,restaurants.size());
服务响应。放置(“列表”,餐厅);
返回Response.ok(serviceResponse.build();
}捕获(例外e){
logger.error(“获取餐厅列表时出错:”,e);
apiResponse.put(“error”,例如getMessage());
}
返回Response.status(500).entity(apiResponse.build();
}
我想要的是,我希望这家餐厅的形象是。如何配置控制器以实现所需的输出 如果需要检索资源,则应使用绝对路径 它是一个可注入接口,提供对应用程序和请求URI信息的访问 您的代码可以是这样的:
@GET
@Produces("application/json")
public Response list(@Context UriInfo uriInfo) {
...
try {
List<Restaurant> restaurants = restaurantService.list();
for(Restaurant restaurant: restaurants) {
String imageURI = restaurant.getRestaurantImage();
String imageFileName = imageURI.substring(imageURI.lastIndexOf("/"));
restaurant.setRestaurantImage(uriInfo.getAbsolutePath()+"/"+imageFileName);
}
serviceResponse.put("total", restaurants.size());
serviceResponse.put("list", restaurants);
return Response.ok(serviceResponse).build();
...
}
...
}
每个路径都必须精心设计,以适合您的应用程序和资源URI
我希望这能对您有所帮助。您的响应类型似乎是
java.util.HashMap
,您希望如何在URL类型(java.net.URL
)中获得响应
?我现在正在这样尝试:List restaurants=restaurantService.List();对于(Restaurant-Restaurant:restaurants){String-imageURI=Restaurant.getRestaurantImage();Restaurant.setRestaurantImage(AppConstant.Restaurant\u-IMG\u-URL+imageURI);}您尝试获取路径AbsolutePath并将其设置到您的服务响应中。但是单线程不允许您读取路径并写入映射,您应该尝试observer模式获取绝对路径,然后将其写入HashMap。您能帮我编写一些代码片段吗?我没有足够的时间给出代码片段,但我有一个链接()这有效地描述了这种情况。因为我将把这个api与mobile集成,所以我不希望对列表中的每个项目都调用api。因此,应该没有用于获取图像的api。您可以省略第二个资源。两个@GET提供程序作为直接依赖关系断开连接。
@GET
@Path("data/{imgFilename}")
@Produces("image/png")
public Response getImage(@PathParam("imgFilename") String fileName) {
File image = restaurantService.getImgByName(fileName);
return Response.ok(image).build();
}