2010-01-29 49 views
0

Restlet's(Google App Engine上的2.0M6)注释实际上对于资源方法的顺序来说是明智的。 发布html表单数据时,请确保@Post(“html”)方法位于接收资源中的@Post(“xml”)方法之上。 至少Firefox会将两种内容类型放入请求的Accept头,因此将处理第一个匹配的方法。为什么HTML表单发布到restlet资源不起作用?

问题是,如果有其他方法可以实现对方法优先级的控制吗?

例如,我希望客户端只接受text/html。

+0

“html”是“application/x-www-form-urlencoded”的正确表示吗? – 2010-01-29 15:27:42

+0

@PartlyCloudy:这是关于在应用程序收到“application/x-www-form-urlencoded”发布数据后,什么样的表示形式被发送回客户端。 由于表单通常在html中,所以应该如此(例如,与通常导致xml的ajax post请求相反)。 – Jasper 2010-01-30 18:06:41

+0

不知道我明白“我希望客户只接受text/html。”如果你正在实现一个服务器,而不是一个客户端,那么你无法控制客户端在“Accept”头中发送的内容。您只能控制您的服务器如何解释请求,以及它如何响应。 你能澄清一下你的问题吗?你是否问过一个情况:客户端在Accept头中指定了多种类型,并且你希望一种类型优先于另一种类型,而不管它们在'Accept'头中是如何指定的? – 2010-02-07 16:47:29

回答

1

根据你的意见,你问是否有某种客户端的HTML表单属性或JavaScript来修改接受头,答案是,AFAIK:不。不适用于用户提交的点击链接或表单。正如你在你的评论中提到的,你可能能够使用JS来拦截链接点击和表单帖子,并使用XHR,但如果可能的话,那可能会很棘手。

顺便说一句,XmlHttpRequest实际上与XML没有任何关系。它可以处理任何请求和响应的内容。将HTML片段返回给XHR请求并使用DOM注入来动态更新页面是非常常见的。