{"id":13626454,"url":"https://github.com/ojlm/indigo-api","last_synced_at":"2025-04-16T14:33:39.695Z","repository":{"id":46560872,"uuid":"135733799","full_name":"ojlm/indigo-api","owner":"ojlm","description":"Web服务端, 类Postman, 场景执行, 定时","archived":true,"fork":false,"pushed_at":"2022-08-11T11:04:29.000Z","size":12066,"stargazers_count":41,"open_issues_count":16,"forks_count":10,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-18T02:31:47.077Z","etag":null,"topics":["angular","api-rest","indigo","ng-alain","ng-ant-design","typescript"],"latest_commit_sha":null,"homepage":"https://ojlm.tech/docs/","language":"TypeScript","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/ojlm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-01T15:23:01.000Z","updated_at":"2023-05-02T11:51:28.000Z","dependencies_parsed_at":"2022-09-11T01:23:27.996Z","dependency_job_id":null,"html_url":"https://github.com/ojlm/indigo-api","commit_stats":null,"previous_names":["asura-pro/indigo"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojlm%2Findigo-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojlm%2Findigo-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojlm%2Findigo-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojlm%2Findigo-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ojlm","download_url":"https://codeload.github.com/ojlm/indigo-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249250821,"owners_count":21237961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["angular","api-rest","indigo","ng-alain","ng-ant-design","typescript"],"created_at":"2024-08-01T21:02:19.383Z","updated_at":"2025-04-16T14:33:38.755Z","avatar_url":"https://github.com/ojlm.png","language":"TypeScript","readme":"# Indigo\r\n\r\n\u003cimg src=\"./images/indigo.png\" height=\"144\"\u003e\r\n\r\n[![Build Status](https://travis-ci.org/asura-pro/indigo.svg?branch=master)](https://travis-ci.org/asura-pro/indigo)\r\n![GitHub release](https://img.shields.io/github/release/asura-pro/indigo.svg)\r\n![GitHub](https://img.shields.io/github/license/asura-pro/indigo.svg)\r\n\r\n---\r\n\r\n## 关于 Indigo\r\n\r\n`Indigo` 是一个测试接口的系统. 可以对 `Http(s)`, `Dubbo`, `MySql` 的请求响应进行断言. 一般用于企业内部接口的自动化测试, CI/CD Pipeline 节点, 线上巡检监控.\r\n\r\n## 基本特性\r\n\r\n#### 基于 Web UI 操作, 在线编辑和测试\r\n\r\n\u003e 使用 [Typescript](http://www.typescriptlang.org/), [Angular](https://angular.io/), [Ant Design](https://ng.ant.design/docs/introduce/zh) 技术实现. `Indigo` 的定位并非是一个框架而是一个开箱即用的测试系统, 对此设计了一套还算好用的 UI. 有 UI 的好处是, 相对与写脚本, 使用成本及其低, 且比使用脚本效率高 N 倍(大部分情况下, 尤其是当用例的数量非常大时). 但和其他基于脚本的接口测试框架相比, 必然缺少了一定的灵活性. 事实上大部分接口测试场景都很简单, 就是响应进行断言并没有很复杂的逻辑(那是业务系统的工作). `Indigo` 内置 Javascript 脚本引擎, 结合场景 其实灵活性也很高的.\r\n\r\n#### 可维护高数量级的用例, 具备较高的并发执行性能\r\n\r\n\u003e `Indigo`的[后端](https://github.com/asura-pro/asura) 使用[Akka](https://akka.io/)框架作为底层基础实现. `Akka`是`JVM`上一个[Actor编程模型](https://doc.akka.io/docs/akka/current/guide/actors-motivation.html)的实现, 很适合用来构建高并发, 分布式和弹性消息驱动的应用. `Indigo`中使用了大量的`Actor`来对场景和任务进行抽象, 保证大量场景和任务同时执行过程中的状态隔离. `Indigo`中的数据, 包括基本的用例数据, 执行记录, 报告数据都存储在`Elastic Search`中.\r\n\r\n#### 基于JSON的强大断言\r\n\r\n\u003e `Indigo`中断言被抽象为一个JSON结构体(JSON格式的DSL). [断言参考](https://asura-pro.github.io/indigo-docs/#/zh-cn/assertion)\r\n``` json\r\n{\r\n  \"$.entity.data\" : {\r\n    \"$and\" : [\r\n      { \"$.code\" : { \"$eq\" : \"10000\" } },\r\n      {\r\n        \"$.list\" : {\r\n          \"$and\" : [\r\n            { \"$type\" : \"array\" },\r\n            { \"$size\" : 10 }\r\n          ]\r\n        }\r\n      }\r\n    ]\r\n  }\r\n}\r\n```\r\n\r\n#### 场景和任务\r\n\r\n\u003e `场景`可以由一组顺序执行的不同类型的请求用例组成. 其中每一个步骤都可以导出变量供之后的请求使用. 可以把多个请求或场景组装成一个`任务`. `任务`可以通过接口, Cron定时或其他自定义事件源触发, 一般用于巡检监控和持续集成. \r\n\r\n---\r\n\r\n## 截图示例\r\n\r\n\u003e 使用场景\r\n\u003e ![](./images/scenario.gif)\r\n\r\n\u003e 使用任务\r\n\u003e ![](./images/job.gif)\r\n\r\n\u003e 任务统计数据, 趋势图\r\n\u003e ![](./images/create-a-job-report.png)\r\n\r\n\u003e 每次请求的详细数据\r\n\u003e ![](./images/create-a-job-report-item.png)\r\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fojlm%2Findigo-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fojlm%2Findigo-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fojlm%2Findigo-api/lists"}