以前に「.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 で検索してください。