优化ApiFox中的JSON运用体会

近来ApiFox用的略感不便, 原因有二:

  1. 有几次恳求中输入了过错的JSON恳求体.

    然后一个字一个字找哪里缺逗号哪里多了个大括号, 感觉自己很蠢也很浪费时间.

  2. 每次apifox跑通的接口, 浏览器上却没跑通, 比照的时候字段次序不一, 也比较痛苦. (chrome会依据key排序展示恳求体)

遇得多了, 于是决议一次解决这两个问题

完成

环境: ApiFox版别2.1.31

思路:

  1. JSON.parse 解析报错 JSON 格局过错的位置
  2. 自界说函数 jsonSort 排序 JSON 并替换为恳求体
  3. 调用 JSON.parse 和 jsonSort 函数

过程:

  1. 项目概览>前置操作>添加前置操作>自界说脚本
jsonSort = function (obj) {
  if (Array.isArray(obj)) {
    return obj.map(jsonSort);
  }
  let sorted = {};
  Object.keys(obj)
    .sort()
    .forEach(
      o => (sorted[o] = obj[o] instanceof Object ? jsonSort(obj[o]) : obj[o])
    );
  return sorted;
};
let headers = pm.request.headers;
let body = pm.variables.replaceIn(pm.request.body.raw);
if (headers.get('Content-Type') === 'application/json') {
  let parsed;
  pm.test('JSON格局检查', () => (parsed = JSON.parse(body)));
  pm.test("JSON排序", () => pm.request.body.update(JSON.stringify(jsonSort(parsed), null, 2)))
}

jsonSort办法这么写是方便一些人将他设置在公共脚本(ApiFox全局变量的界说要求)

茶余饭后

其实我个人认为ApiFox现在需要添加的功用还挺多的, 其实我给一些官方提过定见, 可是说实话大多数处理的还没一般github issues回复快, 就在这儿淡淡的吐槽下算了

  1. 守时主动备份或是回溯, 特别重要, 虽然我这没人提过, 可是我自个担心谁哪天把部分接口不小心删了, 一个还好, 一堆重写便是灾难了, 我现在的解决办法是每周一手动克隆一次项目作为备份, 挺怪的可是是我现在懂得的最简单的备份方式, 如果有一劳永逸并且不算特别费事的好办法欢迎评论区弥补
  2. socket功用, 我并没有很深化ApiFox, 可是就外表上来看我没找到socket, 查了也没见过有人用他来测验socket, postman有websocket, 不过他要是还能像hoppscotch那样有socket.io和MQTT我大概会更加喜爱
  3. 本文所解决的问题之一, json格局过错时检查适当费事, postman里边格局过错会有赤色波浪线以供快速定位过错, 像我这样看error定位恐怕仍是不太合适
  4. JSON变量必须要在字符串内才有用, 如果我的变量是布尔或是数字之类的就只能通过前置脚本来手动替换, 适当费事
  5. 还有…

列出来的都是我觉得挺重要的点, 还没吐槽完, 不过虽然有毛病, 但瑕不掩瑜吧算是, 至少现在团队用ApiFox便是我引荐的, 不用postman的原因主要是翻看文档和检查完好恳求相对费事, 我是那种chrome标签开超五个都能难过的人, 标签太多难分主次, postman检查完好恳求还直接分成两个窗口我只能说完美戳中我痛点

ApiFox快给我打钱