【问题标题】:How to respond with HTML or JSON depending on the request in Sails.js如何根据 Sails.js 中的请求使用 HTML 或 JSON 响应
【发布时间】:2017-04-13 04:54:18
【问题描述】:

假设我有一个名为 User 的模型,它具有基本的 REST CRUD(GET、POST、DELETE、UPDATE)。

当我转到user/4(其中4是不存在存在的用户的ID)时,有两种情况:

  1. 如果我使用 Postman 之类的 REST 客户端执行此操作,我会得到 404,没有别的。
  2. 如果我在浏览器上,我将获得一个 404 页面(包含文本、图像等),该页面在 views 文件夹中定义。

我如何才能为 findOnefind 和其他 URL 实现此目的?我希望能够对不同类型的请求进行仅 JSON 响应和 HTML 页面响应。但我不想重写这些函数,因为 ORM 已经做了很多我不想失去的工作。

编辑:我的解决方案是为 API 保留前缀,例如 /api/user/4,而 HTML 响应不带前缀 user/4,但我希望看到更优雅的解决方案.

编辑 2: 我刚刚决定全部使用 JSON,并且仅使用带有独立前端的 REST 服务;)

【问题讨论】:

    标签: javascript node.js sails.js


    【解决方案1】:

    如果您可以控制 API 客户端发送的标头,我会看到两个干净的语义解决方案,基于发送的标头:

    • 您可以依靠 X-Requested-With: XMLHttpRequest 标头来识别 Ajax 查询
    • 依靠Accept: text/json 标头显式请求json

    您还可以使用文件扩展名修改 url 以请求特定响应,user/4.html => 发送 html,user/4 => 发送 json。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 2021-07-25
      • 2021-05-10
      • 1970-01-01
      • 2015-11-29
      相关资源
      最近更新 更多