Java 如何为应用程序/x-octet-stream接受头使用Rest Get注释
我希望能够根据GET请求头中的Java 如何为应用程序/x-octet-stream接受头使用Rest Get注释,java,http,rest,get,restlet,Java,Http,Rest,Get,Restlet,我希望能够根据GET请求头中的Accept类型调用某个方法。目前,我的资源类中有以下内容: import org.restlet.resource.Get; @Get("json") public Representation getJson(Variant variant) throws Exception{ return new StringRepresentation("json"); } @Get("xml") public Representation getXml(Var
Accept
类型调用某个方法。目前,我的资源类中有以下内容:
import org.restlet.resource.Get;
@Get("json")
public Representation getJson(Variant variant) throws Exception{
return new StringRepresentation("json");
}
@Get("xml")
public Representation getXml(Variant variant) throws Exception {
return new StringRepresentation("xml");
}
@Get("x-octet-stream")
public Representation getFile(Variant variant) throws Exception {
return new StringRepresentation("octet-stream");
}
我可以使用http-GET成功调用方法getJson()
和getXml()
,将Accept
头分别设置为application/json
和application/xml
。当我使用Accept
头发出GET作为application/x-octet-stream
时,调用getJSon()
方法,而不是用x-octet-stream
注释的方法。你知道为什么吗?和/或如何调用getFile()
方法
Rest是否只允许对方法入口点使用
json
和xml
?是否有已识别类型的列表?我已经在网站上看过了,但是没有任何类似的列表。谢谢我相信@Get
注释使用“文件扩展名”在应用程序的MetadataService
对象中查找方法。有关默认支持的“文件扩展名”列表,请参见此类的JavaDoc(addCommonExtensions()
)
作为默认的“捕获所有”媒体类型,应用程序/八位字节流及其压缩版本都没有默认映射。但是,您还可以添加任意数量的自定义映射和MediaType
实例。我通常会在我的应用程序设置中这样做,例如:
public Application(final Context context)
{
super(context);
getMetadataService().addExtension("html", MediaType.TEXT_HTML, true);
}
完整性:如果您正试图从光盘下载预生成的文件,您可能还对使用目录类感兴趣。我相信
@Get
注释使用“文件扩展名”在应用程序的MetadataService
对象中查找该方法。有关默认支持的“文件扩展名”列表,请参见此类的JavaDoc(addCommonExtensions()
)
作为默认的“捕获所有”媒体类型,应用程序/八位字节流及其压缩版本都没有默认映射。但是,您还可以添加任意数量的自定义映射和MediaType
实例。我通常会在我的应用程序设置中这样做,例如:
public Application(final Context context)
{
super(context);
getMetadataService().addExtension("html", MediaType.TEXT_HTML, true);
}
为了完整性:如果您正试图从光盘下载预生成的文件,您可能还对使用目录类感兴趣。是的,这是可行的。你怎么知道这是要采取的方法?我不确定我是如何在自己的研究中发现这一点的。老实说,我不记得从1.1.x版开始我就一直在使用restlet,我认为这可能是从那时起随着库的发展而发展的。我已经有一段时间没有仔细查看这方面的文档了。文档的发展速度可能不够快,无法跟上。javadocs:*将默认语言设置为language.ENGLISH\u US,将默认编码设置为encoding.IDENTITY(无编码),将默认媒体类型设置为MediaType.APPLICATION\u OCTET\u STREAM。它还调用addCommonExtensions()方法。你怎么知道这是要采取的方法?我不确定我是如何在自己的研究中发现这一点的。老实说,我不记得从1.1.x版开始我就一直在使用restlet,我认为这可能是从那时起随着库的发展而发展的。我已经有一段时间没有仔细查看这方面的文档了。文档的发展速度可能不够快,无法跟上。javadocs:*将默认语言设置为language.ENGLISH\u US,将默认编码设置为encoding.IDENTITY(无编码),将默认媒体类型设置为MediaType.APPLICATION\u OCTET\u STREAM。它还调用addCommonExtensions()方法。