{"id":20677783,"url":"https://github.com/clivern/rhino","last_synced_at":"2025-04-19T20:58:13.585Z","repository":{"id":37248329,"uuid":"243735764","full_name":"Clivern/Rhino","owner":"Clivern","description":"❄️ HTTP Mocking \u0026 Debugging Service.","archived":false,"fork":false,"pushed_at":"2025-04-08T09:55:18.000Z","size":793,"stargazers_count":32,"open_issues_count":11,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-13T02:29:45.468Z","etag":null,"topics":["clivern","debugging-tool","developer-tools","hacktoberfest","http-mock","http-mocking","microservices","microservices-architecture","rest-mock","rhino"],"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/Clivern.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"custom":"clivern.com/sponsor/"}},"created_at":"2020-02-28T10:25:22.000Z","updated_at":"2023-07-27T00:00:13.000Z","dependencies_parsed_at":"2023-02-12T13:47:41.016Z","dependency_job_id":"ae61388f-b1be-42a4-99d1-b837bbd5d45a","html_url":"https://github.com/Clivern/Rhino","commit_stats":{"total_commits":328,"total_committers":2,"mean_commits":164.0,"dds":"0.16768292682926833","last_synced_commit":"fb1513d5f8d2c6a0710e10c352297a27f02c4c3c"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FRhino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FRhino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FRhino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FRhino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Clivern","download_url":"https://codeload.github.com/Clivern/Rhino/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249800313,"owners_count":21327032,"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":["clivern","debugging-tool","developer-tools","hacktoberfest","http-mock","http-mocking","microservices","microservices-architecture","rest-mock","rhino"],"created_at":"2024-11-16T21:17:06.250Z","updated_at":"2025-04-19T20:58:13.558Z","avatar_url":"https://github.com/Clivern.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"Rhino Logo\" src=\"https://raw.githubusercontent.com/clivern/Rhino/master/assets/img/gopher.png?v=1.7.0\" width=\"150\" /\u003e\n    \u003ch3 align=\"center\"\u003eRhino\u003c/h3\u003e\n    \u003cp align=\"center\"\u003eHTTP Mocking \u0026 Debugging Service\u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/Clivern/Rhino/actions\"\u003e\u003cimg src=\"https://github.com/Clivern/Rhino/workflows/Build/badge.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Rhino/actions\"\u003e\u003cimg src=\"https://github.com/Clivern/Rhino/workflows/Release/badge.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Rhino/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/Version-1.7.0-red.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://goreportcard.com/report/github.com/Clivern/Rhino\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/clivern/Rhino?v=1.7.0\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://hub.docker.com/r/clivern/rhino\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docker-Latest-green\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Rhino/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/LICENSE-MIT-orange.svg\"\u003e\u003c/a\u003e\n    \u003c/p\u003e\n\u003c/p\u003e\n\nRhino is an HTTP Mocking \u0026 Debugging Service. It enables easy mocking of any HTTP web service for testing and debugging purposes. Also it can simulate high latencies and failures to make sure your services have the capability to withstand and recover from failures. It supports cross-origin resource sharing (CORS) so it can be used as a backend for single page applications.\n\n\n## Documentation\n\n### Usage\n\nGet [the latest binary.](https://github.com/Clivern/Rhino/releases)\n\n```zsh\n$ curl -sL https://github.com/Clivern/Rhino/releases/download/x.x.x/Rhino_x.x.x_OS_x86_64.tar.gz | tar xz\n```\n\nCreate the config file `config.prod.json`\n\n```json\n{\n    \"app\": {\n        \"mode\": \"prod or dev\",\n        \"port\": \"8080\",\n        \"domain\": \"http://127.0.0.1:8080\",\n        \"tls\": {\n            \"status\": \"off\",\n            \"pemPath\": \"/cert/server.pem\",\n            \"keyPath\": \"/cert/server.key\"\n        }\n    },\n    \"mock\": [\n        {\n            \"path\": \"/api/v2/service1/mock/:id\",\n            \"request\": {\n                \"method\": \"get\"\n            },\n            \"response\": {\n                \"statusCode\": 200,\n                \"headers\": [\n                    {\"key\": \"Content-Type\", \"value\": \"application/json\"}\n                ],\n                \"body\": \"{\\\"id\\\": \\\":id\\\"}\"\n            },\n            \"chaos\": {\n                \"latency\": \"0s\",\n                \"failRate\": \"0%\"\n            }\n        },\n        {\n            \"path\": \"/api/v2/service2/mock/:id\",\n            \"request\": {\n                \"method\": \"get\",\n                \"parameters\": {\n                    \"var_param\": \":var_param\",\n                    \"fixed_param\": 10\n                }\n            },\n            \"response\": {\n                \"statusCode\": 200,\n                \"headers\": [\n                    {\"key\": \"Content-Type\", \"value\": \"application/json\"}\n                ],\n                \"body\": \"@json:@config_dir/route.response.json\"\n            },\n            \"chaos\": {\n                \"latency\": \"0s\",\n                \"failRate\": \"0%\"\n            }\n        }\n    ],\n    \"debug\": [\n        {\n            \"path\": \"/api/v2/service/debug\",\n            \"chaos\": {\n                \"latency\": \"0s\",\n                \"failRate\": \"0%\"\n            }\n        }\n    ],\n    \"log\": {\n        \"level\": \"info\",\n        \"output\": \"stdout or /var/log/rhino.log\",\n        \"format\": \"text or json\"\n    }\n}\n```\n\nRun Rhino with that config file\n\n```zsh\n$ ./rhino serve -c /custom/path/config.prod.json\n```\n\nCheck the release.\n\n```zsh\n$ ./rhino version\n```\n\nTest it.\n\n```zsh\n$ curl http://127.0.0.1:8080/_health\n```\n\nYou can use fake data flags inside response body and rhino will auto generate them. Here is the full list of supported types:\n\n```bash\nAnyOf: @fake(:anyof[A||B||C||D])\nLatitude: @fake(:lat)\nLongitude: @fake(:long)\nCreditCardNumber: @fake(:cc_number)\nCreditCardType: @fake(:cc_type)\nEmail: @fake(:email)\nDomainName: @fake(:domain_name)\nIPV4: @fake(:ipv4)\nIPV6: @fake(:ipv6)\nPassword: @fake(:password)\nPhoneNumber: @fake(:phone_number)\nMacAddress: @fake(:mac_address)\nURL: @fake(:url)\nUserName: @fake(:username)\nTollFreeNumber: @fake(:toll_free_number)\nE164PhoneNumber: @fake(:e_164_phone_number)\nTitleMale: @fake(:title_male)\nTitleFemale: @fake(:title_female)\nFirstName: @fake(:first_name)\nFirstNameMale: @fake(:first_name_male)\nFirstNameFemale: @fake(:first_name_female)\nLastName: @fake(:last_name)\nName: @fake(:name)\nUnixTime: @fake(:unix_time)\nDate: @fake(:date)\nTime: @fake(:time)\nMonthName: @fake(:month_name)\nYear: @fake(:year)\nDayOfWeek: @fake(:day_of_week)\nDayOfMonth: @fake(:day_of_month)\nTimestamp: @fake(:timestamp)\nCentury: @fake(:century)\nTimeZone: @fake(:timezone)\nTimePeriod: @fake(:time_period)\nWord: @fake(:word)\nSentence: @fake(:sentence)\nParagraph: @fake(:paragraph)\nCurrency: @fake(:currency)\nAmount: @fake(:amount)\nAmountWithCurrency: @fake(:amount_with_currency)\nUUIDHypenated: @fake(:uuid_hyphenated)\nUUID: @fake(:uuid_digit)\n```\n\n\n### Docker\n\nClone and then run docker containers.\n\n```zsh\n# Simple setup\n$ git clone https://github.com/Clivern/Rhino.git\n$ cd Rhino/deployment/basic/docker-compose\n$ docker-compose up -d\n\n# In case you want to visualize incoming requests with grafana\n$ git clone https://github.com/Clivern/Rhino.git\n$ cd Rhino/deployment/advanced/docker-compose\n$ docker-compose up -d\n```\n\n\n## Versioning\n\nFor transparency into our release cycle and in striving to maintain backward compatibility, Rhino is maintained under the [Semantic Versioning guidelines](https://semver.org/) and release process is predictable and business-friendly.\n\nSee the [Releases section of our GitHub project](https://github.com/clivern/rhino/releases) for changelogs for each release version of Rhino. It contains summaries of the most noteworthy changes made in each release.\n\n\n## Bug tracker\n\nIf you have any suggestions, bug reports, or annoyances please report them to our issue tracker at https://github.com/clivern/rhino/issues\n\n\n## Security Issues\n\nIf you discover a security vulnerability within Rhino, please send an email to [hello@clivern.com](mailto:hello@clivern.com)\n\n\n## Contributing\n\nWe are an open source, community-driven project so please feel free to join us. see the [contributing guidelines](CONTRIBUTING.md) for more details.\n\n\n## License\n\n© 2020, Clivern. Released under [MIT License](https://opensource.org/licenses/mit-license.php).\n\n**Rhino** is authored and maintained by [@clivern](http://github.com/clivern).\n","funding_links":["clivern.com/sponsor/"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclivern%2Frhino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclivern%2Frhino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclivern%2Frhino/lists"}