API ラッパーの対応表
プリザンターの Web API(/api/...)には、スクリプト(ブラウザ側の $p.api*)とサーバースクリプト(items.* など)のラッパーがあります。ただし、すべての API にラッパーがあるわけではなく、同じ「取得」でも返ってくる項目が違います。このページは、どの API がどこから呼べるかの対応表です。
INFO
実装の根拠は、確認時のソースへの固定リンクで示しています。スクリプトのラッパーは _api.js、サーバースクリプトのホストオブジェクトは ServerScriptUtilities.cs#L1224-L1251 で確かめています。
3 つの層の関係
図を読み込み中…
- スクリプト:
$p.apiExec(url, args)でargs.dataを JSON にして POST する薄いラッパーです。画面の CSRF トークン(Token)を自動で付け、セッションで認証します(_api.js#L64-L86)。ラッパーがない API も$p.apiExec()に URL を渡せば呼べます。 - サーバースクリプト: HTTP を通らず、API 用の
Contextを作り直して C# の処理を直接呼びます(ServerScriptUtilities.cs#L1401-L1427)。ラッパーがない API はhttpClientで自分自身の Web API を呼ぶしかありません。
レコード(Items)
| Web API | スクリプト | サーバースクリプト | 備考 |
|---|---|---|---|
{id}/Get | $p.apiGet | items.Get(id, view) | |
{id}/Create | $p.apiCreate | items.Create(id, model) | |
{id}/Update | $p.apiUpdate | items.Update(id, model) | |
{id}/Upsert | $p.apiUpsert | items.Upsert(id, model) | サーバースクリプトは期限付き・記録テーブルのみ |
{id}/Delete | $p.apiDelete | items.Delete(id) | |
{id}/BulkDelete | $p.apiBulkDelete | items.BulkDelete(id, json) | スクリプト版は data.GridCheck: true で一覧のチェック状態を All・Selected に変換して送る(_api.js#L37-L62) |
{id}/BulkUpsert | なし | なし | |
{id}/Import | なし | なし | |
{id}/Export | なし | なし |
サイト
| Web API | スクリプト | サーバースクリプト | 備考 |
|---|---|---|---|
{id}/GetSite | $p.apiGetSite | items.GetSite(id) | |
{id}/CreateSite | $p.apiCreateSite | items.Create(フォルダの ID, model) | モデルは items.NewSite(参照タイプ) で作る。フォルダの ID を渡すとサイトとして作成される(ItemModel.cs#L1874-L1904) |
{id}/UpdateSite | $p.apiUpdateSite | items.Update(サイト ID, model) | 変更履歴の扱いが API と違う(サイト更新時の変更履歴) |
{id}/DeleteSite | $p.apiDeleteSite | items.Delete(サイト ID) | |
{id}/CopySitePackage | $p.apiCopySitePackage | なし | |
{id}/SynchronizeSummaries | なし | なし | |
{id}/UpdateSiteSettings | なし | なし | |
{id}/GetClosestSiteId | $p.apiGetClosestSiteId | items.GetClosestSite(名前, 起点 ID) | サイト名で SiteId を解決する |
サーバースクリプトには、Web API に対応するものがないサイト検索・集計・モデル生成のメソッドもあります(ServerScriptModelApiItems.cs)。
| メソッド | 内容 |
|---|---|
items.GetSiteByTitle(title) / items.GetSiteByName(siteName) / items.GetSiteByGroupName(siteGroupName) | タイトル・サイト名・サイトグループ名でサイトを探す(配列を返す) |
items.New() / items.NewIssue() / items.NewResult() / items.NewSite(referenceType) | 作成用の空のモデルを作る |
items.Sum / Average / Max / Min(siteId, columnName, view) | 数値項目の集計 |
items.Count(siteId, view) | 件数 |
items.MaxDate / MinDate(siteId, columnName, view) | 日付項目の最大・最小 |
ユーザー・組織・グループ
| Web API | スクリプト | サーバースクリプト |
|---|---|---|
users/Get・users/{id}/Get | $p.apiUsersGet | users.Get(id)、users.GetList(view, offset, pageSize) |
users/Create | $p.apiUsersCreate | users.Create(model) |
users/{id}/Update | $p.apiUsersUpdate | users.Update(id, model) |
users/{id}/Delete | $p.apiUsersDelete | なし |
users/Import | なし | なし |
depts/Get・depts/{id}/Get | $p.apiDeptsGet | depts.Get(id) |
depts/Create | $p.apiDeptsCreate | depts.Create(model) |
depts/{id}/Update | $p.apiDeptsUpdate | depts.Update(id, model) |
depts/{id}/Delete | $p.apiDeptsDelete | なし |
depts/Import | なし | なし |
groups/Get・groups/{id}/Get | $p.apiGroupsGet | groups.Get(id) |
groups/Create | $p.apiGroupsCreate | groups.Create(model) |
groups/{id}/Update | $p.apiGroupsUpdate | groups.Update(id, model) |
groups/{id}/Delete | $p.apiGroupsDelete | なし |
groups/Import | なし | なし |
サーバースクリプトからは、ユーザー・組織・グループのどれも削除できません(ServerScriptModelUsers.cs、ServerScriptModelDepts.cs、ServerScriptModelGroups.cs)。
取得できる項目の違い
スクリプトの $p.apiUsersGet などは Web API をそのまま呼ぶので、Web API と同じ項目が返ります。サーバースクリプトの users.Get()・depts.Get()・groups.Get() は専用のモデルを返し、項目が限られます。
| 対象 | サーバースクリプトで取れる項目 | 追加のメソッド |
|---|---|---|
| ユーザー(ServerScriptModelUserModel.cs) | UserId、DeptId、LoginId、Name、UserCode、TenantManager、ServiceManager、Disabled、拡張項目 | なし |
| 組織(ServerScriptModelDeptModel.cs) | DeptId、DeptCode、DeptName、Body、Disabled、拡張項目 | GetMembers()(所属ユーザー) |
| グループ(ServerScriptModelGroupModel.cs) | GroupId、GroupName、Body、Disabled、拡張項目 | GetMembers()、ContainsDept(id)、ContainsUser(id)、GetChildren()、ContainsChild(id) |
メールアドレスや姓・名など、ここにない項目が必要なときは Web API(スクリプトなら $p.apiUsersGet)を使います。ログイン中のユーザー自身の情報なら、スクリプトでは $p.userId() などのシステム変数、サーバースクリプトでは context から取れます(スクリプトで使えるシステム変数)。
その他の API
| Web API | スクリプト | サーバースクリプト | 備考 |
|---|---|---|---|
extended/Sql | なし | extendedSql.ExecuteDataSet / ExecuteTable / ExecuteRow / ExecuteScalar / ExecuteNonQuery(name, params) | 拡張 SQL の活用 |
items/{id}/OutgoingMails/Send | $p.apiSendMail | なし | サーバースクリプトの notifications はサイトの通知設定を使って送る別の仕組み |
sessions/Get・Set・Delete | なし | なし | セッション間のデータ共有。同じリクエスト内のサーバースクリプト間なら context.UserData で値を渡せる |
binaries/{guid}/Get・GetStream・Upload | なし | なし | ファイルのみのアップロード |
extensions/Get・Create・{id}/Update・{id}/Delete | なし | なし | Extensions テーブル |
tenants/*、utility/GetLicenseInfo、backgroundtasks/RebuildSearchIndexes | なし | なし |