{"id":13612577,"url":"https://github.com/hidu/api-front","last_synced_at":"2026-01-24T08:47:39.900Z","repository":{"id":31714684,"uuid":"35280484","full_name":"hidu/api-front","owner":"hidu","description":"api统一前端、转发代理、协议分析、流量复制","archived":false,"fork":false,"pushed_at":"2024-12-20T06:26:28.000Z","size":4462,"stargazers_count":104,"open_issues_count":0,"forks_count":49,"subscribers_count":14,"default_branch":"master","last_synced_at":"2026-01-12T05:36:20.075Z","etag":null,"topics":["api-gateway","dispatch"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hidu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-05-08T13:21:31.000Z","updated_at":"2025-09-09T15:45:06.000Z","dependencies_parsed_at":"2025-04-14T13:32:28.106Z","dependency_job_id":null,"html_url":"https://github.com/hidu/api-front","commit_stats":null,"previous_names":["hidu/api-proxy","hidu/mimo","hidu/api-man"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/hidu/api-front","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidu%2Fapi-front","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidu%2Fapi-front/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidu%2Fapi-front/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidu%2Fapi-front/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hidu","download_url":"https://codeload.github.com/hidu/api-front/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidu%2Fapi-front/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28721197,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-gateway","dispatch"],"created_at":"2024-08-01T20:00:31.832Z","updated_at":"2026-01-24T08:47:39.878Z","avatar_url":"https://github.com/hidu.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# api-front\n\nversion :0.8.1\n\n## 概述\napi front是HTTP API统一前端，用于测试环境api统一管理，主要功能是`请求代理转发`、`协议抓包分析`、`流量复制`。 \n\n用于解决如下问题：\n\n1. HTTP API大行其道,开发调试（特别是联调）花费的时间、人力成本很高。\n2. 后端的API调用是一个黑盒，特别是有问题的时候，基本是抓瞎(目前一般是把请求信息记录到日志中去)。\n3. 线下联调测试环境复杂多变，配置文件经常变动，经常其中一个环境好了另外一个又坏了。\n4. 可将接口的请求历史记录全部记录方便排查问题。  \n5. 对返回的结果进行修改，返回再返回给客户端。\n     \n## 两种典型应用场景：\n\n### api输出\n对外接口统一使用api-front管理，第三方通过api-front调用接口。有问题可随时抓包查看。  \n\n### api接入  \n接入外部依赖的api接口统一使用api-front管理，第三方环境变动可轻松切换，有问题也可随时抓包查看。\n\n\n## 部署示例\n![dispatch](resource/img/dispatch.png)  \napi-front作为对外统一api入口。  \n如上图，可打开页面  http:10.10.2.10/_/ 进行接口管理。(系统自己的接口，页面都是以_开头的)  \n\n## 下载安装\n\n使用go get命令安装：  \n```\ngo get -u github.com/hidu/api-front\n```\n\n## 运行\n```\napi-front -conf ./conf/server.json\n```\n\n## 编译安装(docker)\n\n整个工程上传到服务器的一个目录\n\n### 编译\n```shell\ndocker build -t api-front .\n```\n\n### 启动方式1(如果没有安装docker-compose 请使用方式2)\n```shell\ndocker-compose up -d\n```\n\n### 启动方式2\n```shell\ndocker run -d --name api-front --net=host \\\n -v conf:/home/appuser/app/conf \\\n -v log:/home/appuser/app/log api-front\n```\n\n### 查看运行日志\n```shell\ndocker logs -ft api-front\n```\n\n\n## 配置\n\n### 主配置文件\n\u003cp\u003econf/server.json\u003c/p\u003e\n```\n{\n  \"users\":[\"admin\"],\n  \"store_api_url\":\"http://127.0.0.1/test/store.php\",\n  \"store_view_url\":\"http://127.0.0.1/test/view.php?host_id={host_id}\u0026api_name={api_name}\"\n}\n```\n注：admin用户有所有权限。  \nstore_api_url: 远程保存请求详情的地址，发送post请求（同时需要下列子服务配置中的store=true才会生效）  \nstore_view_url: 查看接口历史数据的页面地址  \n\n\n### 子服务配置\n\u003cp\u003econf/vhost/8080.json\u003c/p\u003e\n```\n{\n    \"port\": 8080,\n    \"group\": \"order\",\n    \"name\": \"order api\",\n    \"enable\": true,\n    \"hidden_cookie\": true,\n    \"note\": \"订单相关接口\",\n    \"users\": [\n        \"test\"\n    ]\n    \"store\":true\n}\n```\n访问 http://127.0.0.1:8080/ 即可进入管理页面。  \n注：test用户有当前子服务的所有权限。\n\n\n### 用户配置\n文件名：conf/users  ，普通文本文件：  \n```\nid:admin psw_md5:7bb483729b5a8e26f73e1831cde5b842 psw:psw\nid:test psw_md5:7bb483729b5a8e26f73e1831cde5b842 psw:psw\n```\n修改服务配置需要登陆。\n\n### 登陆控制\n默认是采用普通的用户名/密码的认证方式（使用conf/users用户表）。  \n目前已经支持oauth2来登陆认证，若配置oauth2信息并且enable=true则使用oauth2登陆以进行权限控制。  \n`conf/server.json` 配置如下：  \n```\n{\n\"users\":[\"xxxx\"],\n\"oauth2\":{\n  \"type\":\"google\",\n   \"enable\":true,\n  \"client_id\":\"your client id\",\n  \"client_sk\":\"your client secret key\",\n  \"scopes\":[\"openid\", \"email\"],\n  \"auth_url\":\"https://accounts.google.com/o/oauth2/v2/auth\",\n  \"token_url\":\"https://accounts.google.com/o/oauth2/token\",\n   \"broken_auth_header\":false,\n  \"apis\":{\n      \"user_info\":{\n        \"url\":\"https://www.googleapis.com/oauth2/v3/userinfo\",\n        \"field_map\":{\n            \"id\":\"email\"\n        }\n      }\n  }\n}\n}\n\n```\nbroken_auth_header：获取token时是否不支持header模式  \n\napis/user_info/field_map属性是用来进行属性映射的，以解决不同系统返回用户信息不一致的问题，默认值如下：\n```\n    //标准名字，当前名字\n    \"id\":        \"id\",\n    \"nick_name\": \"name\",\n    \"email\":     \"email\",\n    \"picture\":   \"picture\",\n```\n\n###说明\nhidden_cookie:在使用协议抓包分析(analysis)是输出到前端的cookie值是否隐藏起来。  \n\n### 界面截图\n\n![dispatch](doc/index.png)  \n\n服务列表：\n![dispatch](doc/vhost_list.png)  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhidu%2Fapi-front","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhidu%2Fapi-front","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhidu%2Fapi-front/lists"}