Resteasy:字节与生成和消费" text / plain&#34 ;?有什么关系?

时间:2014-08-28 00:08:10

标签: resteasy

我不确定为什么以下产生和消费" text / plain"因为我们正在处理字节。

根据oracle:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

字节为8位,"的最小值为-128,最大值为127(包括)。"那么这与" text"?

有什么关系呢?
@Path("/")
public class MyService 
{
    @GET
    @Produces("text/plain")
    public byte[] get() 
    {
        return "hello world".getBytes();
    }

    @POST
    @Consumes("text/plain")
    public void post(byte[] bytes) 
    {
        System.out.println(new String(bytes));
    }
}

我可以理解Post明确地生成文本作为它的字符串。

请保持答案可以理解。再次感谢。

1 个答案:

答案 0 :(得分:3)

String是一个字符列表。每个字符都指向charset表中的值。因此,如果您查看ASCIIUTF-8表格,您会看到小数值65指向首都' A'。

使用此信息,您可以从一个字节转换为字符串并返回:

new String(new byte[] {65}) // A
"A".getBytes("UTF-8")[0] // 65

如果您有一个restful资源,您的JAX-RS运行时将为您使用@Produces("text/plain")指定的ContentType选择相应的MessageBodyWriter。此MessageBodyWriter知道如何将byte []转换为text/plain

但正如@Thilo已经评论过:返回字符串似乎更清晰(只要你不读取文件中的字节[]并且不想将其转换为字符串在你自己)。