rksoftware

Visual Studio とか C# とかが好きです

プリザンターの API を扱う .NET ライブラリを書いてみました

以前に「.NET アプリからプリザンターの API を呼んでみる」記事を書きました。

前回は雑にデータ取得 API の中の一つを実装しただけでしたが、今回は一通りの API をたたけるようになっていると思います。
プロジェクトは GitHub に。

使い方

var apiClient = new PApiHelper.PApiClient
{
    ApiKey = "<取得したAPIKey>",
    BaseUrl = "http://localhost:1759/"
};
{// Item の取得
    var requestData = new PGetApiRequest();
    requestData.View.ColumnFilterHash.Add("Title", "<取得したいデータのタイトル>");
    var responseDataI = await apiClient.PostGetItemsAsync(<取得するデータのテーブルのID>, requestData);
}
{// 組織の取得
    var responseDataD = await apiClient.PostGetDeptsAsync(new PGetApiRequest());
}
{// グループの取得
    var responseDataG = await apiClient.PostGetGroupsAsync(new PGetApiRequest());
}
{// ユーザーの取得
    var responseDataU = await apiClient.PostGetUsersAsync(requestData);
}
{// Item の Create
    var responseData = await apiClient.PostCreateItemsAsync(<CreateするテーブルのID>, new PApiItem() { Title = "Create Title" });
}
{// Item の Update
    var responseData = await apiClient.PostUpdateItemsAsync(<Update するデータのID>, new PApiItem() { Title = "Update Title" });
}
{// Item のDelete
    var responseData = await apiClient.PostDeleteItemsAsync(<Delet するデータのID>, new PApiItem() { });
}

このライブラリで簡潔に扱えるのではないかと思います。

注意点

最近新しい形式のAPIができたということで、それに対応しています。
しかし、ItemsのAPIがどうしてもうまく動かなかったので、プリザンターのソースに手を入れて確認しています。
この変更が正しいかどうかは不明なのでその点ご注意ください。

変更箇所は2か所ですが、どちらも同じ変更です。

変更箇所

  • Implem.Pleasanter.Models.Results.ResultUtilitiesクラスの6715行目
  • Implem.Pleasanter.Models.Issues.IssueUtilitiesクラスの6901行目

変更前

var api = context.FormString.Deserialize<Api>();

変更前

var api = context.RequestDataString.Deserialize<Api>();

NuGet

このライブラリを、使いやすいように NuGet にアップしてみました。
使う際は PApiHelper で検索してください。