记录一个不是坑的坑

之前对接了一个API,接口写好了自测的时候却出现了问题,发现接口调不通。
当时我是一个大写的懵圈 😲。

寻坑之路

  1. 使用Postman调用接口 正常返回数据。
  2. 开始怀疑自己代码写的有问题
    • Postman选择自己用的request包生成代码片段,复制到项目中调试,结果还是不通 😑
    • 对比请求发现Postman的请求头中多了User-Agent
    • 取消Postman中的User-Agent,调用接口失败
    • 发现了问题所在。
  3. 最后的最后问了一下对接方,原来是对接方对没有User-Agent的请求进行了拦截 GIAO

填坑

两种方案

  1. 更换使用的包:

    换成了nestjsHttpService,调用接口成功。

    看了源码发现HttpService底层使用的是axiosaxios判断了在headers中是否存在User-Agent,如果不存在添加自己的User-Agent

    1
    2
    3
    4
    5
    6
    // Set User-Agent (required by some servers)
    // Only set header if it hasn't been set in config
    // See https://github.com/axios/axios/issues/69
    if (!headers["User-Agent"] && !headers["user-agent"]) {
    headers["User-Agent"] = "axios/" + pkg.version;
    }
  2. 给原来的请求增加User-Agent
    options中的headers添加User-Agent(随便加就行)

#

简单记录一下这个不是坑的坑。