RESTful Web服务的HTML界面*没有*javascript

Tod*_*wen 9 html forms rest webforms

即使我提供PUT和DELETE的替代品(参见"低REST"),如何为从浏览器访问我的Web服务的用户提供用户友好的表单验证,同时仍然暴露RESTful URI?表单验证问题(如下所述)是我当前的问题,但我想问的更广泛的问题是:如果我试图同时提供RESTful公共接口非JavaScript HTML界面,那么它是否会让生活更轻松或更难?他们一起玩吗?

从理论上讲,它应该仅仅是改变输出格式的问题.机器可以查询URL"/ people",并获取XML列表.人类用户可以将他们的浏览器指向相同的URL,并获得漂亮的HTML响应.(我正在使用微格式wiki中URL示例,这看起来相当合理).

通过对"/ people"URL的POST请求来创建新的人员资源.为此,人类用户可以首先访问"/ people/new",它返回用于创建资源的静态HTML表单.表单有method = POST和action ="/ people".如果用户的输入有效,这将正常工作,但如果我们在服务器端进行验证并发现错误怎么办?友好的事情是返回表单,填充用户刚输入的数据,加上错误消息,以便他们可以解决问题并重新提交.但是我们无法将输出直接从POST返回到"/ people",或者它会破坏我们的URL系统,如果我们将用户重定向回"/ people/new"表单,则无法报告错误和重新填充表单(除非我们将数据存储到会话状态,这将更少RESTful).

使用javascript,事情会容易得多.只需在后台执行POST,如果失败,则在表单顶部显示错误.但是当javascript支持不可用时,我希望应用程序优雅地降级.目前,我得出的结论是,一个非平凡的Web应用程序无法在没有javascript的情况下实现HTML界面,使用传统的RESTful URL方案(例如微格式wiki上描述的方案).如果我错了,请告诉我!

Stack Overflow上的相关问题(两者都不涉及表单验证):

Bre*_*ton 7

你可以将html表单直接发布到/ people/new.如果验证失败,请使用适当的信息重新编辑编辑表单.如果成功,请将用户转发到新URL.这与我理解的REST架构一致.

我看到你对Monis Iqbal发表评论,我不得不承认我不知道"非RESTful URLS"是什么意思.REST架构从URL中提出的唯一要求是它是不透明的,并且它与资源唯一配对.REST不关心它的外观,内容是什么,斜线或使用方式,使用的数量或类似内容.URL的可见设计取决于您,REST没有任何影响.