【C#】RestSharpの使い方

HttpClientをラップしたRestSharpというライブラリがあります。C#でAPIを叩く場合に、HttpClientより簡単に書けるようなので試してみました。

https://restsharp.dev/intro.html

利用準備

パッケージをインストールします

dotnet add package RestSharp

使い方

GET

GETメソッドを実行したい場合は、下記のように使います。

using RestSharp;

var client = new RestClient("https://umayadia-apisample.azurewebsites.net");
var request = new RestRequest("/api/persons");
var response = await client.GetAsync(request);

GetAsync<T> の形で利用することで、自動的に.NETのクラスにデシリアライズしてくれます。
HttpClientだとデシリアライズしたい場合は、レスポンスに対してSystem.Text.Jsonを使っていたので便利に感じます。

using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://umayadia-apisample.azurewebsites.net")
{
    Authenticator = new HttpBasicAuthenticator("id", "password"),
};
var request = new RestRequest("/api/persons");
var root= await client.GetAsync<Root>(request);
foreach (var item in response.Data)
{
    Console.WriteLine($"{item.Name} {item.Age}歳 {item.Note}");
}

public class Person
{
    [JsonPropertyName("name")]
    public string Name { get; set; }

    [JsonPropertyName("note")]
    public string Note { get; set; }

    [JsonPropertyName("age")]
    public int Age { get; set; }

    [JsonPropertyName("registerDate")]
    public DateTime RegisterDate { get; set; }
}

public class Root
{
    [JsonPropertyName("success")]
    public bool Success { get; set; }

    [JsonPropertyName("data")]
    public List<Person> Data { get; set; }
}

POST

RestRequestにAddJsonBodyでパラメータを渡します。パラメータの渡し方はHttpClientと同様にDictionaryで渡せます。また、匿名型や<T>でも渡せます。

using RestSharp;
using RestSharp.Authenticators;

var param = new Dictionary<string, object>()
{
    ["name"] = "ぺんた",
    ["note"] = "大阪府出身",
    ["age"] = 30,
    ["registerDate"] = "2021-12-01",
};

var client = new RestClient("https://umayadia-apisample.azurewebsites.net")
{
    Authenticator = new HttpBasicAuthenticator("id", "password"),
};
var postRequest = new RestRequest("/api/persons").AddJsonBody(param);
var root = await client.PostAsync<Root>(postRequest);

認証

Basic認証

using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://umayadia-apisample.azurewebsites.net")
{
    Authenticator = new HttpBasicAuthenticator("id", "password"),
};
var request = new RestRequest("/api/persons");
var response = await client.GetAsync(request);
Console.WriteLine(response.Content);

OAuth 2

client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(
    "Bearer", beareToken
);

// もしくは
request.AddHeader("Authorization", $"Bearer {beareToken}");

Leave a Reply

Your email address will not be published. Required fields are marked *