ngrok客户端API

ngrok客户端公开了一个REST API,它授予对以下各项的编程访问权限:

  • 收集状态和指标信息
  • 收集和重放捕获的请求
  • 动态启动和停止隧道

基本URL和身份验证

Base URL http://127.0.0.1:4040/api
Authentication None

ngrok客户端API作为ngrok的本地Web检查接口的一部分公开。因为它在本地接口上提供,所以API没有身份验证。如果您覆盖配置文件中的web_addr,基本URL将会更改。

访问正在运行的ngrok客户端的根API资源

  1. curl http://localhost:4040/api/

支持的内容类型

请求参数可以使用 application/x-www-form-urlencoded or application/json编码到API。确保您的客户机适当地设置请求的Content-Type头。 API返回的所有响应都是 application/json

版本控制和API稳定性

ngrok客户端API保证,除非调用者明确选择使用较新的版本,否则绝不会对API进行更改。 呼叫者选择加入API的新版本的机制将在以后当有必要时被确定。 不会选择加入的API的不间断更改示例包括以下内容。

  • 增加新的资源
  • 向现有资源添加新方法
  • 在现有资源表示上添加新字段
  • 修正错误,修改API以符合记录的行为

列出隧道

返回包含状态和指标信息的正在运行的隧道的列表。

Request

GET/api/tunnels

Response

Parameters

tunnels 所有正在运行的隧道的列表。有关每个隧道对象的参数的文档,请参阅隧道详细资源

示例响应

  1. {
  2. "tunnels": [
  3. {
  4. "name": "command_line",
  5. "uri": "/api/tunnels/command_line",
  6. "public_url": "https://d95211d2.ngrok.io",
  7. "proto": "https",
  8. "config": {
  9. "addr": "localhost:80",
  10. "inspect": true,
  11. },
  12. "metrics": {
  13. "conns": {
  14. "count": 0,
  15. "gauge": 0,
  16. "rate1": 0,
  17. "rate5": 0,
  18. "rate15": 0,
  19. "p50": 0,
  20. "p90": 0,
  21. "p95": 0,
  22. "p99": 0
  23. },
  24. "http": {
  25. "count": 0,
  26. "rate1": 0,
  27. "rate5": 0,
  28. "rate15": 0,
  29. "p50": 0,
  30. "p90": 0,
  31. "p95": 0,
  32. "p99": 0
  33. }
  34. }
  35. },
  36. ...
  37. ],
  38. "uri": "/api/tunnels"
  39. }

启动隧道

动态地在ngrok客户端上启动一个新的隧道。请求主体参数与在配置文件中用于定义隧道的参数相同。

Request

POST/api/tunnels

Parameters

参数名称和行为与配置文件中定义的参数名称和行为相同。使用 隧道定义部分作为配置参数及其行为的参考。

请求正文示例

  1. {
  2. "addr": "22",
  3. "proto": "tcp",
  4. "name": "ssh"
  5. }

Response

2201状态码与响应主体描述启动的隧道。请参阅关于响应对象的参数的文档的 Tunnel 详细信息资源

示例响应

  1. {
  2. "name": "",
  3. "uri": "/api/tunnels/",
  4. "public_url": "tcp://0.tcp.ngrok.io:53476",
  5. "proto": "tcp",
  6. "config": {
  7. "addr": "localhost:22",
  8. "inspect": false,
  9. },
  10. "metrics": {
  11. "conns": {
  12. "count": 0,
  13. "gauge": 0,
  14. "rate1": 0,
  15. "rate5": 0,
  16. "rate15": 0,
  17. "p50": 0,
  18. "p90": 0,
  19. "p95": 0,
  20. "p99": 0
  21. },
  22. "http": {
  23. "count": 0,
  24. "rate1": 0,
  25. "rate5": 0,
  26. "rate15": 0,
  27. "p50": 0,
  28. "p90": 0,
  29. "p95": 0,
  30. "p99": 0
  31. }
  32. }
  33. }

隧道细节

获取命名运行隧道的状态和指标

Request

GET/api/tunnels/:name

Response

示例响应

  1. {
  2. "name": "command_line",
  3. "uri": "/api/tunnels/command_line",
  4. "public_url": "https://ac294125.ngrok.io",
  5. "proto": "https",
  6. "config": {
  7. "addr": "localhost:80",
  8. "inspect": true,
  9. },
  10. "metrics": {
  11. "conns": {
  12. "count": 0,
  13. "gauge": 0,
  14. "rate1": 0,
  15. "rate5": 0,
  16. "rate15": 0,
  17. "p50": 0,
  18. "p90": 0,
  19. "p95": 0,
  20. "p99": 0
  21. },
  22. "http": {
  23. "count": 0,
  24. "rate1": 0,
  25. "rate5": 0,
  26. "rate15": 0,
  27. "p50": 0,
  28. "p90": 0,
  29. "p95": 0,
  30. "p99": 0
  31. }
  32. }
  33. }

停止隧道

停止正在运行的隧道

Request

DELETE/api/tunnels/:name

Response

204状态代码与空主体

列出捕获的请求

返回捕获用于检查的所有HTTP请求的列表。这将只返回仍在内存中的请求(ngrok在内存使用超过inspect_db_size时清除捕获的请求))

Request

GET/api/requests/http

Query Parameters

limit 要返回的最大请求数
tunnel_name 过滤器仅请求给定的隧道名称

Example Request

  1. curl http://localhost:4040/api/requests/http?limit=50

Response

requests 捕获的请求列表。请参阅请求对象上文档的捕获的请求详细资源资源

示例响应

  1. {
  2. "uri": "/api/requests/http",
  3. "requests": [
  4. {
  5. "uri": "/api/requests/http/548fb5c700000002",
  6. "id": "548fb5c700000002",
  7. "tunnel_name": "command_line (http)",
  8. "remote_addr": "192.168.100.25",
  9. "start": "2014-12-15T20:32:07-08:00",
  10. "duration": 3893202,
  11. "request": {
  12. "method": "GET",
  13. "proto": "HTTP/1.1",
  14. "headers": {
  15. "Accept": [
  16. "*/*"
  17. ],
  18. "Accept-Encoding": [
  19. "gzip, deflate, sdch"
  20. ],
  21. "Accept-Language": [
  22. "en-US,en;q=0.8"
  23. ],
  24. "Connection": [
  25. "keep-alive"
  26. ],
  27. "User-Agent": [
  28. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
  29. ],
  30. "X-Original-Host": [
  31. "c159663f.ngrok.io"
  32. ]
  33. },
  34. "uri": "/favicon.ico",
  35. "raw": ""
  36. },
  37. "response": {
  38. "status": "502 Bad Gateway",
  39. "status_code": 502,
  40. "proto": "HTTP/1.1",
  41. "headers": {
  42. "Content-Length": [
  43. "1716"
  44. ]
  45. },
  46. "raw": "",
  47. }
  48. },
  49. ...
  50. ]
  51. }

重播捕获的请求

针对隧道的本地端点重复请求

Request

POST/api/requests/http

Parameters

id 重放请求的ID
tunnel_name 要播放请求的隧道的名称。如果未指定,请求将针对其记录的相同隧道播放

请求示例

  1. curl -d "id=548fb5c700000002" http://localhost:4040/api/requests/http

Response

204状态代码与空主体

删除捕获的请求

删除所有捕获的请求

Request

DELETE/api/requests/http

Response

204 status code with no response body

捕获的请求详细信息

返回捕获的请求的元数据和原始字节。原始数据在JSON响应中是base64编码的。如果本地服务器尚未响应请求,响应response值可以为null

Request

GET/api/requests/http/:request_id

Response

示例响应

  1. {
  2. "uri": "/api/requests/http/548fb5c700000002",
  3. "id": "548fb5c700000002",
  4. "tunnel_name": "command_line (http)",
  5. "remote_addr": "192.168.100.25",
  6. "start": "2014-12-15T20:32:07-08:00",
  7. "duration": 3893202,
  8. "request": {
  9. "method": "GET",
  10. "proto": "HTTP/1.1",
  11. "headers": {
  12. "Accept": [
  13. "*/*"
  14. ],
  15. "Accept-Encoding": [
  16. "gzip, deflate, sdch"
  17. ],
  18. "Accept-Language": [
  19. "en-US,en;q=0.8"
  20. ],
  21. "Connection": [
  22. "keep-alive"
  23. ],
  24. "User-Agent": [
  25. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
  26. ],
  27. "X-Original-Host": [
  28. "c159663f.ngrok.io"
  29. ]
  30. },
  31. "uri": "/favicon.ico",
  32. "raw": ""
  33. },
  34. "response": {
  35. "status": "502 Bad Gateway",
  36. "status_code": 502,
  37. "proto": "HTTP/1.1",
  38. "headers": {
  39. "Content-Length": [
  40. "1716"
  41. ]
  42. },
  43. "raw": "",
  44. }
  45. }