如何使用Spring MVC \ Boot正确实现返回图像列表的REST服务?

时间:2016-11-21 17:02:57

标签: spring spring-mvc spring-boot spring-restcontroller

我对RESTful Web服务并不是这样,我对使用RESTful范例如何正确返回图像列表存在以下疑问。

我正在开发一个Spring Batch应用程序(但是为此目的使用Spring MVC是一回事)。我有这个控制器方法,它将图像列表作为转换为JSON消息的字节数组列表返回给客户端。

我用这种方式实现了它:

@RequestMapping(value = "getAllImagesByRoomId",
        method = RequestMethod.GET,
        produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<byte[]>> getAllImagesByRoomId(Long roomId) throws DataAccessException {

    log.debug("getAllImagesByRoomId START");

    List<byte[]> result = roomMediaService.getRoomImageListById(roomId);

    log.debug(result.toString());

    log.debug("getAllImagesByRoomId END");

    return ResponseEntity.ok(result);

}

它运行得很好,我的客户端从返回的JSON中检索图像。

但据我所知,它不是RESTful概念,因为在REST主体中我必须返回一个JSON响应,其中包含指向所有单个图像的超链接,然后客户端可以跟踪这些链接并获取图像。

因此,在这种情况下,我将对单个图像(由URL表示)提供服务句柄请求,并将图像作为字节数组返回。但对于返回图像列表的服务,我有我的REST服务返回URI列表,代表第一个服务所服务的单个图像。

可能是个好主意吗?

1 个答案:

答案 0 :(得分:2)

Spring Data REST

什么是和不是宁静一直在争论。一般来说,它涉及通过URI定位特定资源的无状态HTTP请求,并且响应通常符合JSON。并非所有这些都是严格而快速的规则,但这正是您通常会看到的。

上述方法的改进是HATEOAS,它是您所引用的链接。

您可以通过 Spring Data REST 项目轻松生成Restful,HATEOAS端点。它处理大部分痛苦的配置,让您专注于您希望公开的资源。