{"id":16485131,"url":"https://github.com/rivantsov/arrest","last_synced_at":"2026-05-13T17:43:53.160Z","repository":{"id":36937807,"uuid":"220715986","full_name":"rivantsov/arrest","owner":"rivantsov","description":".NET REST client","archived":false,"fork":false,"pushed_at":"2024-07-09T22:01:21.000Z","size":89,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-11T14:45:07.043Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","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/rivantsov.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-09T23:18:01.000Z","updated_at":"2022-12-08T04:43:33.000Z","dependencies_parsed_at":"2024-11-12T14:52:53.909Z","dependency_job_id":null,"html_url":"https://github.com/rivantsov/arrest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rivantsov%2Farrest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rivantsov%2Farrest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rivantsov%2Farrest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rivantsov%2Farrest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rivantsov","download_url":"https://codeload.github.com/rivantsov/arrest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241261502,"owners_count":19936045,"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":[],"created_at":"2024-10-11T13:24:16.961Z","updated_at":"2026-05-13T17:43:53.131Z","avatar_url":"https://github.com/rivantsov.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ARREST - .NET REST client\n\n**Arrest** is a client-side component for communicating with REST APIs and services. It is a wrapper around HttpClient with a number of convenient methods for automatically serializing/deserializing typed data objects. \n\nExamples: \n```c#\n  var client = new RestClient(\"http://www.bookstore.com\");\n  var someBooks = await client.GetAsync\u003cIList\u003cBook\u003e\u003e(\"api/books?take={0}\", 10);\n  var theBook = client.Get\u003cBook\u003e(\"api/books/{0}\", someBookId); //sync version\n  var myReview = new BookReview() { ... };\n  var myReviewBack = await client.PostAsync\u003cBookReview, BookReview\u003e(myReview, \"api/user/reviews\");\n  \n```\nThe client handles HTTP status codes returned by the service (throws exceptions on BadRequest and Server errors).\nSupports Json serialization. Supports sync and async operations. \nSee RestCallTests.cs class for examples of use. \n\nYou can pass additional request headers, and CancellationToken: \n```c#\n  var someBook = await client.GetAsync\u003cBook\u003e(\"api/book/{0}\", 123, (\"X-Cor-Id\", CorId), token);\n  \n```\n\nYou can get response headers and other information about response:\n```c#\n  var contextBox = new ArgContextBox(); \n  var someBook = await client.GetAsync\u003cBook\u003e(\"api/book/{0}\", 123, (\"X-Cor-Id\", CorId), contextBox);\n  var respHeader = contextBox.GetResponseHeader(\"X-Cor-Id\")?.FirstOrDefault();\n  \n  var respMessage = contextBox.Response;\n  \n```\n\nREST client supports automatic retries - just pass a RetryPolicy instance to the constructor\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frivantsov%2Farrest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frivantsov%2Farrest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frivantsov%2Farrest/lists"}