0

所以,我花了很多时间编写一个很酷的 RESTful API。POST为简化起见,可以通过对 执行请求来创建新用户/users

太好了,是吗?但是现在我的 HTML 表单想要创建一个用户。它的所有元素都与需要传递给/users. form因此,充分利用这个优秀的 API似乎很有意义。

我的表格位于/register.html. 它的属性现在是:action="/users" method="post". 开箱即用地与我的 API 完美集成!

问题?我的 RESTful API 将以 JSON 响应,而我的表单无法处理此响应。例如,当传递了无效的电子邮件地址时,返回的正文可能是{"error": 400, "msg": "The given email address is invalid."}. 相反,register.html应该接收此消息并显示适当的消息,同时允许用户修复输入错误。

一个明显的解决方案是根本不发送表单,而是使用 AJAX 根据输入值与 API 进行交互。但是,这远非理想,因为该表单对于没有 Javascript 的人来说毫无用处。

我可以考虑其他任何方法吗?还是我不应该将表单输入与我的 API 结合起来?

我认为这并不重要,但我正在使用 Node.js。

4

1 回答 1

2

一种选择是双模式 API:接受 JSON 和表单数据输入,返回 JSON 和 HTML(或 HTML 片段)作为响应。

HTML 片段开始在无缝 iframe 的上下文中变得有意义;与此同时,这种方法仍然会在客户端上使用 javascript。完整的 HTML 是经典的网络——没有什么可以阻止您的资源同时呈现 HTML 和 JSON。

AcceptContent-Type标题是你的朋友。暂时不要将资源的 URL 与其表示与资源本身混淆。这是三个不同的东西。是的,有时它很混乱。世界也一样!

于 2013-08-18T16:29:28.127 回答