您将如何设计一个基于 REST 的 Web 服务来接收 InputStream
形式的图像文件?如果将 InputStream
发送到 REST 端点,该端点如何接收它以便创建图像文件?
最佳答案
在 JAX-RS 中可以接收 InputStream。您只需放置不带注释的 InputStream 参数:
@POST
public void uploadImage(InputStream stream) {
// store image
}
请注意它适用于任何内容类型。
虽然它会起作用,但我建议使用更“JAX-RS 方式”:
1 创建将从 InputStream 创建图像类(例如 java.awt.Image)的提供程序:
@Provider
@Consumes("image/jpeg")
class ImageProvider implements MessageBodyReader<Image> {
public Image readFrom(Class<Image> type,
Type genericType,
Annotation[] annotations,
MediaType mediaType,
MultivaluedMap<String, String> httpHeaders,
InputStream entityStream) throws IOException,
WebApplicationException {
// create Image from stream
}
}
2 像注册资源一样注册提供者。
3 使您的资源类接收 Image 而不是 InputStream。
为什么这种方法更好?
您将反序列化逻辑与资源类分开。因此,如果将来您希望支持更多图像格式,您只需添加额外的提供程序,而资源将保持不变。
关于java - 创建 Rest Web 服务以接收图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722406/