Proyecto26.RestClient
1.2.0
See the version list below for details.
dotnet add package Proyecto26.RestClient --version 1.2.0
NuGet\Install-Package Proyecto26.RestClient -Version 1.2.0
<PackageReference Include="Proyecto26.RestClient" Version="1.2.0" />
paket add Proyecto26.RestClient --version 1.2.0
#r "nuget: Proyecto26.RestClient, 1.2.0"
// Install Proyecto26.RestClient as a Cake Addin #addin nuget:?package=Proyecto26.RestClient&version=1.2.0 // Install Proyecto26.RestClient as a Cake Tool #tool nuget:?package=Proyecto26.RestClient&version=1.2.0
RestClient for Unity 🤘
This HTTP/REST Client is based on Promises to avoid the Callback Hell ☠️ and the Pyramid of doom 💩 working with Coroutines in Unity 🎮, example:
var root = "https://jsonplaceholder.typicode.com";
RestClient.GetArray<Post>(root + "/posts", (err, res) => {
RestClient.GetArray<Todo>(root + "/todos", (errTodos, resTodos) => {
RestClient.GetArray<User>(root + "/users", (errUsers, resUsers) => {
if(err != null){
EditorUtility.DisplayDialog ("Error", errTodos.Message, "Ok");
}
});
});
});
But working with Promises we can improve our code, yay! 👏
RestClient.GetArray<Post>(root + "/posts").Then(response => {
EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson<Post>(response, true), "Ok");
return RestClient.GetArray<Todo>(root + "/todos");
}).Then(response => {
EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson<Todo>(response, true), "Ok");
return RestClient.GetArray<User>(root + "/users");
}).Then(response => {
EditorUtility.DisplayDialog ("Success", JsonHelper.ArrayToJson<User>(response, true), "Ok");
}).Catch(err => EditorUtility.DisplayDialog ("Error", err.Message, "Ok"));
Demo ⏯
Do you want to see this beautiful package in action? Download the demo here
Installation 👨💻
Nuget package
Download this package from NuGet with Visual Studio creating a NuGet.config file at the root of your Unity Project, for example:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="./Assets/Packages" />
</config>
</configuration>
The package to search for is Proyecto26.RestClient.
Getting Started 📚
The default methods (GET, POST, PUT, DELETE) are:
RestClient.Get("https://jsonplaceholder.typicode.com/posts/1").Then(response => {
EditorUtility.DisplayDialog("Response", response, "Ok");
})
RestClient.Post("https://jsonplaceholder.typicode.com/posts", newPost).Then(response => {
EditorUtility.DisplayDialog("Status", response.statusCode.ToString(), "Ok");
})
RestClient.Put("https://jsonplaceholder.typicode.com/posts/1", updatedPost).Then(response => {
EditorUtility.DisplayDialog("Status", response.statusCode.ToString(), "Ok");
})
RestClient.Delete("https://jsonplaceholder.typicode.com/posts/1").Then(response => {
EditorUtility.DisplayDialog("Status", response.statusCode.ToString(), "Ok");
})
But we are going to create a class "User" and the HTTP requests to load JSON data easily:
[Serializable]
public class User
{
public int id;
public string name;
public string username;
public string email;
public string phone;
public string website;
}
- GET JSON
var usersRoot = "https://jsonplaceholder.typicode.com/users";
RestClient.Get<User>(usersRoot + "/1").Then(firstUser => {
EditorUtility.DisplayDialog("JSON", JsonUtility.ToJson(firstUser, true), "Ok");
})
- GET Array
RestClient.GetArray<User>(usersRoot).Then(allUsers => {
EditorUtility.DisplayDialog("JSON Array", JsonHelper.ArrayToJsonString<User>(allUsers, true), "Ok");
})
Also we can create different classes for custom responses:
[Serializable]
public class CustomResponse
{
public int id;
}
- POST
RestClient.Post<CustomResponse>(usersRoot, newUser).Then(customResponse => {
EditorUtility.DisplayDialog("JSON", JsonUtility.ToJson(customResponse, true), "Ok");
})
- PUT
RestClient.Put<CustomResponse>(usersRoot + "/1", updatedUser).Then(customResponse => {
EditorUtility.DisplayDialog("JSON", JsonUtility.ToJson(customResponse, true), "Ok");
})
Custom HTTP Headers and Options 💥
HTTP Headers, such as Authorization
, can be set in the DefaultRequestHeaders object for all requests
RestClient.DefaultRequestHeaders["Authorization"] = "Bearer ...";
Also we can add specific options and override default headers for a request
var requestOptions = new RequestHelper {
url = "https://jsonplaceholder.typicode.com/photos",
headers = new Dictionary<string, string>{
{ "Authorization", "Other token..." }
}
};
RestClient.GetArray<Photo>(requestOptions).Then(response => {
EditorUtility.DisplayDialog("Header", requestOptions.GetRequestHeader("Authorization"), "Ok");
})
And later we can clean the default headers for all requests
RestClient.CleanDefaultHeaders();
Collaborators 🥇
Credits 👍
Supporting 🍻
I believe in Unicorns 🦄 Support me, if you do too.
Happy coding 💯
Made with ❤️
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net35 is compatible. net40 was computed. net403 was computed. net45 was computed. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
- RSG.Promise (>= 1.2.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Proyecto26.RestClient:
Repository | Stars |
---|---|
proyecto26/RestClient
🦄 A Promise based REST and HTTP client for Unity 🎮
|
Version | Downloads | Last updated |
---|---|---|
2.6.2 | 693 | 12/28/2021 |
2.6.1 | 741 | 6/10/2020 |
2.6.0 | 681 | 9/20/2019 |
2.5.9 | 578 | 9/9/2019 |
2.5.8 | 564 | 9/9/2019 |
2.5.7 | 588 | 6/22/2019 |
2.5.6 | 667 | 4/23/2019 |
2.5.5 | 610 | 4/20/2019 |
2.5.4 | 613 | 4/18/2019 |
2.5.2 | 711 | 1/23/2019 |
2.5.1 | 671 | 1/21/2019 |
2.4.2 | 738 | 1/14/2019 |
2.4.1 | 714 | 1/10/2019 |
2.2.1 | 805 | 1/2/2019 |
2.2.0 | 762 | 11/21/2018 |
2.1.1 | 837 | 8/26/2018 |
2.1.0 | 802 | 8/23/2018 |
2.0.1 | 832 | 7/27/2018 |
2.0.0 | 976 | 5/22/2018 |
1.2.2 | 1,005 | 3/4/2018 |
1.2.1 | 1,235 | 10/21/2017 |
1.2.0 | 962 | 10/20/2017 |
1.0.1 | 876 | 10/15/2017 |
Added Default Request Headers for all requests and the option to specific headers per request