# 域名转发相关

TLDR: NUAPI 会将所有的访问记录下来请求与返回值, 方便知道所有的请求详细内容.

域名转发的原理如下:

  1. 用户向 NUAPI 域名发送请求
  2. NUAPI 收到请求, 并将请求的所有信息, 转发到设置的 API 服务器域名上, 同时此时 Hold 住连接
  3. NUAPI 收到API 服务器的返回
  4. NUAPI将API 服务器返回的结果, 通过 hold 住的连接返回给用户

# 使用场景

  • APP 端的请求调试
  • 前后端对接
  • mock 数据
  • 后端生成 API 文档

# 特点

  1. 仅需将服务器 API 域名替换掉,其他地方均无改动
  2. 可以将同一请求再次提交
  3. 可以两个请求进行对比
  4. 可以将请求内容分享给其他人
  5. 可以针对不同 path 进行调试或 mock

# 如何使用

首先在 NUAPI中新建域名转发, 我的后端域名地址是 https://api.github.com

则我可以在 NUAPI 中的新建域名转发中填写

https://api.github.com/

20220324171829

创建完毕后, NUAPI会返回代理域名

20220324171910

点击域名, 即可进入日志模式

20220324171949

此时, 我只需要将原来 APP 中的请求的 API 从域名 https://api.github.com 换为 https://6b524866.in.nuapi.com 即可完成所有操作。

此时假设我的 APP 需要对 https://api.github.com/repos/rails/rails 进行 get 请求, 则完全可以用域名 https://6b524866.in.nuapi.com/repos/rails/rails 进行请求。

一般情况下,APP 的API 域名是统一存储在某个文件中的, 改变这个文件里的域名即可, 类似这样

20220324173043

访问后, 我们可以看到在 NUAPI中看到访问的详细内容

20220324185309

我们可以看到这里的 response body

20220324185410

# 请求日志查看

在常见的场景中, 若我们想对 API 的请求进行查看, 我们主要有两种方式: 通过类似 charles 的日志去查看, 或者通过登录服务器, 查看请求的日志。

无论哪种情况, 都比较繁琐, 但是接入 NUAPI 后, 则可以直接登录服务器即可查看到所有请求的参数以及返回

20220325104251

# 对比日志

当我们开发中出现所谓的: “在我的机器上跑的好好的, 为啥到你这就不行了”的时候,我们可以让双发都接入 NUAPI 的域名转发, 此时两个人的请求都会被记录下来, 此时可以将两个人的请求找出,进行一个对比操作, 如下图所示

20220325104740

这样, 就可以轻易的看出, 这两个请求是否一样, 如果不一样, 是哪些内容部一样了 20220325104652

# 重发日志

当我们想要重新对某个地址进行请求的时候, 以前我们通常会有两种方式来进行这类操作:

  1. 在app 中完成之前的操作, 比如想重发登录接口, 则需要先退出登录, 之后再次重新输入账号密码, 再次点击登录
  2. 在后端日志中找到请求的数据, 之后根据日志构造出请求的数据, 利用 postman 或者其他工具进行请求

在使用了 NUAPI 之后, 我们有更简单的操作, 找到之前的请求日志, 直接点击重发即可, 如下图所示

20220328004610

点击后, NUAPI 会将这个请求的所有内容都拷贝到新的请求中, 等待点击发送

20220328004746

同时值得说明的是, 此时包括 body, url 等内容, 实际上是都是可再次编辑的, 我们可以在此处进行编辑后再重发, 这样就可以快速的知道当某些字段发生改变后, 对应的请求是否会发生变化或者抛出异常等。

点击确定, 则会发送请求, 并将结果输出到页面上

20220328004942

# 单个日志的分享

当我们想把一条请求记录分享给其他人的时候, 只需要生成一个简单的链接即可, 不需要查看的人强制注册 NUAPI 用户, 仅拥有 URL 地址即可访问:

20220328005414

当使用分享链接打开地址的时候, 他会看到类似这样的界面, 此界面无需NUAPI 即可查看

20220328005641

这样, 你可以轻松的将你认为有问题的请求, 发送给你的前端或后端。 这个分享详细的描绘了整个请求: 从请求的时间, 到请求的header 参数, body 参数, 以及服务器返回的 header 和 body。

并且, 我们还支持在分享页面进行重发请求, 方便查看者在修正程序后再次重发请求进行验证。

# 分享的地址重发

同时 我们也可以打开 “允许获取链接的人使用 REQUEST 重发功能”

20220328005942

点击发送后 会将结果返回

20220328010008

# 基于 path 的不同功能

针对 域名的 path 我们还可以进行拦截, 并对拦截后的请求进行以下不同的操作

  1. Mock 服务器的返回
  2. 穿透到本地
  3. Debug 调试

20220328010100

# Mock 服务器的返回

当后端并未完成, 或后端暂时都 500 的时候, 前端可以根据之前的设计, 自行构造某个 path 的某个 method 请求的 body 返回, 如下图所示:

20220328010334

特别值得说明的是,一般情况下, 我们直接输入需要返回的字符串即可。 如果您需要变量的支持, 或需要更复杂的渲染方式, mock 的返回渲染使用的是 Liquid 引擎进行结果渲染, 你可以在 https://liquid.bootcss.com/ (opens new window) 中查看使用教程。

# 穿透到本地

域名转发可以针对 path ,绕过服务器地址,将请求转发到开发者自己的机器上,原理与 端口转发功能一致, 具体使用方式请参考端口转发

# Debug 调试

Debug 调试用来解决:临时将服务器的返回结果进行轻量级的调整,例如正常情况下服务器在登录接口下返回 true。 此时前端可以通过调试模式, 将返回结果调整为 false,并观察 app 的运行情况。

原理其实不算复杂, NUAPI的 域名转发基本模式如下:

  1. 用户向 NUAPI域名发送请求
  2. NUAPI收到请求, 并将请求的所有信息, 转发到设置的 API 服务器域名上, 同时此时 Hold 住连接
  3. NUAPI收到API 服务器的返回
  4. NUAPI将API 服务器返回的结果, 通过 hold 住的连接返回给用户

debug 模式是在第 3 步后, 并不执行第四步, 而是先将结果推送至用户的浏览器的 nuapi.com 管理页面中,此时用户可以在浏览器中修改结果, 当点击确定时, 再将修改的结果通过 hold 住的连接返回给发起请求的程序。