java - 创建 Rest Web 服务以接收图像

标签 java rest jax-rs resteasy

您将如何设计一个基于 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/

相关文章:

java - 资源定位器上的 Jaxrs 过滤器

java - 不同 Tomcat 服务器上托管的 REST 服务之间的通信

java - 出现语法错误,但奇怪的建议?

java - 在网络上共享对象(区 block 链)

java - 在 Java 中保护 REST API

c# - REST 不是标准的 'Per-Se' 那么为什么 WCF 创建一个 wsdl,有什么意义,它比 SOAP 更糟糕吗?

java - 我对 ArrayList 作为 Hashtable 的值有疑问

java - Arraylist 的 Arraylist 的通用类型

javascript - Restful服务需要用户名和密码才能获取 token ,是否可以将凭据(用户和通行证)保存在服务器端nodejs中?

java - JaxRS 从服务器创建并返回 zip 文件