node.js - 忽略 http 方法和路径的 API 的缺点

标签 node.js api url seo

我想知道对于 api 完全不知道 HTTP 请求路径的生产服务器会有什么缺点。比如一个api,完全由查询参数决定,甚至完全由http body决定。

let server = require('http').createServer(async (req, res) => {

  let { headers, method, path, query, body } = await parseRequest(res);

  // `headers` is an Object representing headers
  // `method` is 'get', 'post', etc.
  // `path` could look like /api/v2/people
  // `query` could look like { filter: 'age>17&age<35', page: 7 }
  // `body` could be some (potentially large) http body

  // MOST apis would use all these values to determine a response...
  // let response = determineResponse(headers, method, path, query, body);

  // But THIS api completely ignores everything except for `query` and `body`
  let response = determineResponse(query, body);

  doSendResponse(res, response); // Sets response headers, etc, sends response

});

上面服务器的API比较奇怪。它将完全忽略路径、方法、标题和正文。虽然大多数 API 主要考虑方法和路径,但看起来像这样......
method  path                   description

GET     /api                   - Metadata about api
GET     /api/v1                - Old version of api
GET     /api/v2                - Current api
GET     /api/v2/people         - Make "people" db queries
POST    /api/v2/people         - Insert a new person into db
GET     /api/v2/vehicles       - Make "vehicle" db queries
POST    /api/v2/vehicles       - Insert a new vehicle into db
.
.
.

这个API只考虑url查询,看起来很不一样:
url query                                 description

<empty>                                   - Metadata about api
apiVersion=1                              - Old version of api
apiVersion=2                              - Current api
apiVersion=2&table=people&action=query    - Make "people" db queries
apiVersion=2&table=people&action=insert   - Add new people to db
.
.
.

实现这种 api,并确保客户端使用正确的 api 模式不一定是一个问题。我反而想知道 由于使用这种架构编写 api,我的应用程序可能会出现哪些其他问题 .
  • 这对 SEO 有害吗?
  • 这会影响性能吗? (缓存?)
  • 当 api 不知道方法和 url 路径时是否会出现其他问题?
  • 最佳答案

    这确实很不寻常,但这基本上就是 RPC Web api 的工作方式。

    据我所知,不会有任何 SEO 问题。
    性能/缓存应该是相同的,因为完整的“路径”最终由相同的参数组成。

    然而,使用任何不期望它的东西(快速路由器、花哨的 http 客户端等)会很复杂。

    我看到的唯一根本区别是浏览器如何将 POST 请求视为特殊请求(例如,永远不会仅使用链接创建),并且您的 API 将仅使用链接公开删除/创建数据。根据您的情况,这或多或少是危险的。

    我的建议是:不要那样做,坚持标准,除非你有很好的理由不这样做。

    关于node.js - 忽略 http 方法和路径的 API 的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59850446/

    相关文章:

    node.js - 防止错误出现在 node.js 中的用户面前

    node.js - Nodejs + 要求 instanceof 行为

    ruby-on-rails - Ruby API - JSON 解析 - 写入文件

    url - 用于替换部分 URL 的用户脚本

    swift - 检查是否在 UIWebView 中按下了链接

    url - 通过 VBS 脚本检查 URL 的语法

    node.js - 为什么执行 docker run 命令后容器立即退出?

    javascript - 无法使用 sequelize-auto 读取未定义的属性 'findOrCreate'

    java - 使用 CriteriaQuery API 的多态 JPA 查询

    javascript - 无法访问本地 Node 服务器上创建的API