如何找到我网站的所有API?

时间:2018-09-11 14:43:39

标签: api go endpoint

首席开发人员上周突然离开了我的公司。没有记录API。因此,我努力寻找每个API的含义,然后将它们记录在JIRA中。我们使用Golang作为后端。我尝试使用Charles Proxy,Fiddler,JMeter和Chromes检查器/网络,但未显示API。由于技术原因,我希望尽快找到我们所有的API。我的一位开发人员告诉我下载并安装Goland。并指示我执行以下

“字节。*(确定|状态确定|成功) 和mux.nomapi.来获取端点以及正在使用端点的端点,但是不确定是否所有人都使用mux和nomapi

使用goland,您可以轻松跳转到不熟悉的代码非常有用的定义 并找到用法”

不确定所有这些意思。

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

这实际上取决于您的开发人员用来创建API的内容。最好的办法是解析源代码,而不是使用Chrome检查器之类的工具戳戳。您想找到的是API处理程序的路由器。路由器基本上是一种结构,可将API端点(如/api/v1/login/)映射到处理调用的Go函数(适当地称为处理程序)。但是,不幸的是,取决于所使用的框架/库以及代码的结构,这可能在很多不同的地方。因此,虽然我不能给您一个明确的答案,但我可以给您一些建议。

  1. 您将必须阅读Go代码。没办法。这并不难,所以不要害怕。
  2. 很有可能存在一个文件或多个文件,它们称为route.go或routes.go或router.go或类似文件。如果您发现类似的内容,请首先查看。
  3. 如果找不到任何路由,请使用Chrome检查器的“网络”标签查看您的前端调用的API,然后grep端点的代码。假设您的前端对http://api.domain.com/api/v1/accounts/进行了API调用,请在代码中搜索/accounts//api/v1/,如果该代码不适用于/api/。运气好的话,第二或第三次搜索可能会将您带到该应用程序的根路由器,您将能够从那里进行跟踪。
  4. 如果找到一些路由(或路由处理程序),但不是全部,请在文件顶部查找包名称。如果它不是main,尤其是被称为routes之类的东西,则寻找该软件包导入的任何位置(只需grep作为所有文件中的软件包名称,而忽略软件包声明本身) 。
  5. 最流行的路由器库可能是gorilla mux。如果使用了github.com/gorilla/mux,请检查代码是否有任何引用。如果已使用,请查找其中包含HandleFunc的任何代码。这些将是路由器。如果根本不使用路由器库,也是如此。

祝你好运。