如何找到我网站的所有 API?
How can I find all the APIs of my website?
首席开发人员上周突然离开了我的公司。 APIs 没有记录。所以我正在努力发现每个 API 是什么,然后在 JIRA 中记录它们。我们使用 Golang 作为后端。我尝试使用 Charles Proxy、Fiddler、JMeter 和 Chromes inspector/network,但没有显示 API。我有技术限制,我想尽快找到我们所有的 API。我的一位开发人员告诉我下载并安装 Goland。并指示我执行以下操作
"byte.*(okay|StatusOK|成功)
和 mux.
和 nomapi.
获取端点和使用它的端点,但不确定是否所有端点都使用 mux 和 nomapi
使用 goland,您可以轻松跳转到定义,对于不熟悉的代码非常有用
并找到用法
不确定他说的所有这些是什么意思。
有人能指出我正确的方向吗?
这实际上取决于您的开发人员用来创建 API 的内容。最好的办法是解析源代码,而不是使用 Chrome 检查器之类的工具。您想要找到的是 API 处理程序的路由器。路由器基本上是一个将 API 端点(如 /api/v1/login/
)映射到处理调用的 Go 函数(适当地称为处理程序)的结构。但是,不幸的是,根据使用的 framework/library 和代码的结构,这可能在很多非常不同的地方。所以,虽然我不能给你一个明确的答案,但我可以给你一些建议。
- 你将不得不阅读 Go 代码。没有办法解决它。没有那么难,所以不要害怕。
- 很有可能有一个或多个名为 route.go 或 routes.go 或 router.go 或类似名称的文件。如果你发现类似的东西,先看看那里。
- 如果找不到任何路由,请使用 Chrome 检查员的网络选项卡查看 API 调用您的前端,然后 grep 端点代码。比如说,如果您的前端对
http://api.domain.com/api/v1/accounts/
进行 API 调用,请搜索 /accounts/
和 /api/v1/
的代码,如果这对 /api/
不起作用.运气好的话,第二次或第三次搜索可能会将您带到应用程序的根路由器,您将能够从那里追踪它。
- 如果找到一些路由(或路由处理程序),但不是全部,请在文件顶部查找包名称。如果它不是
main
,特别是如果它被称为 routes
之类的东西,请查找导入此包的任何地方(只需 grep 所有文件中的包名称并忽略包声明本身) .
- 可能最流行的路由器库是 gorilla mux。检查代码中是否有任何对
github.com/gorilla/mux
的引用,以防它被使用。如果使用了它,请查找其中包含 HandleFunc
的任何代码。这些将成为路由器。如果根本不使用路由库也是一样。
祝你好运。
首席开发人员上周突然离开了我的公司。 APIs 没有记录。所以我正在努力发现每个 API 是什么,然后在 JIRA 中记录它们。我们使用 Golang 作为后端。我尝试使用 Charles Proxy、Fiddler、JMeter 和 Chromes inspector/network,但没有显示 API。我有技术限制,我想尽快找到我们所有的 API。我的一位开发人员告诉我下载并安装 Goland。并指示我执行以下操作
"byte.*(okay|StatusOK|成功)
和 mux.
和 nomapi.
获取端点和使用它的端点,但不确定是否所有端点都使用 mux 和 nomapi
使用 goland,您可以轻松跳转到定义,对于不熟悉的代码非常有用 并找到用法
不确定他说的所有这些是什么意思。
有人能指出我正确的方向吗?
这实际上取决于您的开发人员用来创建 API 的内容。最好的办法是解析源代码,而不是使用 Chrome 检查器之类的工具。您想要找到的是 API 处理程序的路由器。路由器基本上是一个将 API 端点(如 /api/v1/login/
)映射到处理调用的 Go 函数(适当地称为处理程序)的结构。但是,不幸的是,根据使用的 framework/library 和代码的结构,这可能在很多非常不同的地方。所以,虽然我不能给你一个明确的答案,但我可以给你一些建议。
- 你将不得不阅读 Go 代码。没有办法解决它。没有那么难,所以不要害怕。
- 很有可能有一个或多个名为 route.go 或 routes.go 或 router.go 或类似名称的文件。如果你发现类似的东西,先看看那里。
- 如果找不到任何路由,请使用 Chrome 检查员的网络选项卡查看 API 调用您的前端,然后 grep 端点代码。比如说,如果您的前端对
http://api.domain.com/api/v1/accounts/
进行 API 调用,请搜索/accounts/
和/api/v1/
的代码,如果这对/api/
不起作用.运气好的话,第二次或第三次搜索可能会将您带到应用程序的根路由器,您将能够从那里追踪它。 - 如果找到一些路由(或路由处理程序),但不是全部,请在文件顶部查找包名称。如果它不是
main
,特别是如果它被称为routes
之类的东西,请查找导入此包的任何地方(只需 grep 所有文件中的包名称并忽略包声明本身) . - 可能最流行的路由器库是 gorilla mux。检查代码中是否有任何对
github.com/gorilla/mux
的引用,以防它被使用。如果使用了它,请查找其中包含HandleFunc
的任何代码。这些将成为路由器。如果根本不使用路由库也是一样。
祝你好运。