The new .NET Core is a platform framework that has finally come into my life to shake my coding style - now coding in my favorite OS - MacOSX.
Having spent a few hours in coding under .NET Core 1.0 (RC2), I created the RESTme toolkit. I originally was thinking to just create a RESTful client in the first hour, and then decided to make it more powerful by enabling it to communicate with Azure Storage and Redis Cache - why not? Since they are all about requesting and saving data!
General Code Example
- //HTTP Restful client (sudo code)
- // Get data
- rest.Get(requestUrl);
- // Save data
- rest.Add(paramKey, paramValue);
- rest.Post(requestUrl, data);
- // Delete data
- rest.Delete(requestUrl);
- //Azure Storage or Redis ache sudo-code
- // Get data
- rest.Get<Stream>("/container/filePath");
- rest.Get("/container/jsonData");
- rest.Get<myObject>("/container/filePath");
- // Save data
- rest.Post<myObject>("/container/filePath", myObject);
- // Delete data
- rest.Delete("/container/filePath");
Detailed Examples
- Use it as a basic RESTful HTTP Client.
- //direct string JSON return
- var rest = new Restme(new Uri("http://freegeoip.net"));
- var result1 = rest.Get("/json/github.com");
- //automatic Generic cast
- var result2 = rest.Get < MyObject > ("/json/github.com");
- var resultAsync2 = await rest.GetAsync << MyObjecT > ("/json/github.com");
- //add parameters (Parameters get automatically converted into query string or post form fields)
- rest.add("q", "github.com");
- var result3 = rest.Get < MyObject > ("/json");
- var resultAsync3 = await rest.GetAsync < MyObjecT > ("/json");
- //supports POST, DELETE, PUT etc.
- var rest2 = new Restme(new Uri("http://example.com"));
- rest2.Add("Username", "[email protected]");
- rest2.Add("Birthday", DateTime.UtcNow);
- rest2.Post < MyObject > ("/someurl");
- rest3.PostAsync < MyObject > ("/asyncexample");
- //supports direct object submission
- var myObject = new MyObject()
- {
- Username = "[email protected]",
- Birthday = DateTime.UtcNow
- };
- var rest3 = new Restme(new Uri("http://example.com"));
- rest3.Add(myObject);
- rest3.Post < ExpectedResultObject > ("/directObjectPost");
- Use it as an Azure Storage Client,
- //get blob stream directly
- var blobStorageConnectionString = "{Your Storage Account Connection String}";
- var rest = new Restme(blobStorageConnetionString);
- rest.CreateAzureBlobContainerIfNotExists = true; //do this only if you want to auto create the container
- //NOTE 1: first segment of the path should always be your container name
- //NOTE 3: Type T: if it is a type of Stream it will be stored as original Stream as Azure Blob, otherwise it is always saved into JSON format as Azure Blob
- //NOTE 2: use a type of Stream if you want the original value retrieved from the blob
- rest.Get < Stream > ("/myContainer/myfilePath");
- rest.GetAsync < Stream > ("/myContainer/myfilePath");
- //NOTE: only blob items saved in JSON format is suppported
- rest.Get < ObjectType > ("/myContainer/myfileObjectInJSONFileFormat");
- rest.GetAsync < ObjectType > ("/myContainer/myfileObjectInJSONFileFormat");
- Use it as a Redis Cache Client,
- var redisConnectionString = "{Your Redis Cache Connection String}";
- var rest = new Restme(redisConnectionString);
- //get cache data (support Generic cast)
- var cacheResult = rest.Get("home:testKey");
- var cacheResult2 = rest.Get<bool>("home:testKey2");
- var cacheResult3 = rest.Get<ObjectType>("home:testKey3");
- //set cache data
- rest.Post("home:testKey","value");
- rest.Post<bool>("home:testKey2",true);
- var myObject = new ObjectType(); //will be serialized into JSON format and stored as string on redis server
- rest.Post<ObjectType>("home:testKey3", myObject);
I've made the code open source under MIT on github.
Asad AliPosted May 31, 2016, 2:54 AM
Good one
Kapi ShivharePosted May 29, 2016, 12:49 PM
nice one
Bhuvanesh MohankumarPosted May 29, 2016, 12:45 PM
Good one