Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

合并请求的结果引用问题

  前面的几篇文章中从最基本的合并请求开始纠结到同异步问题的解决,需求正在逐渐变复杂。但其实需求还远没到头,想想 SQL 中的联合表查询吧!请求是可能存在并列或依赖关系的。这可能还会涉及到一些响应数据的直接引用与请求之间的依赖。
  比如现在有个添加列表项目和读取列表项的接口 POST /list 和 GET list/:id,添加列表项的这个接口只返回一个 id。那么加入现在已经有了合并请求的功能,要如何实现只发一个请求就把添加列表项和获取插入的列表项的内容这两件事同时完成掉?
  如果合并请求的接口没有特殊处理,这个需求就是理论上无法实现的。也许我们可以像之前介绍过的方式那样以数组的维度来作为是否以同步方式执行的依据。然而即使此处可以同步执行,由于第二个查询是依赖第一个查询结果的,所以第二个查询的请求参数中必须要有变量。
  要解决响应数据的引用问题就可能要在请求参数中使用一套模板之类的东西,后端在处理请求参数时可以将先前查询到的数据替换到请求参数的模板上。比如这样 [
  {
    method:"POST",
    url:"/list",
  },
  {
    method:"GET",
    url:"/list/@.id",
  }
];
  上一个查询产生一个 {id:ID} 的结构,而这个 @.id 将在其后的查询中引用。如果前面是一个异步操作,后面的引用就可能会复杂一些 [
  [
    {
      method:"POST",
      url:"/list",
    },
    {
      method:"POST",
      url:"/list2",
    }
  ],
  {
    method:"GET",
    url:"/list/@[0].id",
  }
];
  以上这些并不是一个完整的方案,只是一个思路而已。「@.xxx」这样的语法我自己都觉得丑!所以如果大家有什么更好的做法希望可以分享下~
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^