資產HTTP API可讓您對數位資產(包括中繼資料、轉譯和註解),以及使用Experience Manager內容片段的結構化內容執行建立 — 讀取 — 更新 — 刪除(CRUD)操作。 它在/api/assets
公開,並以REST API實作。
若要存取API:
https://[hostname]:[port]/api.json
開啟API服務檔案。https://[hostname]:[server]/api/assets.json
的Assets服務連結。API回應是某些MIME類型的JSON檔案,也是所有MIME類型的回應代碼。 JSON回應為選用,例如PDF檔案可能無法使用。 請仰賴回應程式碼進行進一步分析或動作。
在關閉時間之後,資產及其轉譯無法透過Assets網頁介面和HTTP API使用。 如果準時為將來或非時間為過去,則API會傳回404錯誤訊息。
HTTP API會更新命名空間中 的中繼資料 jcr
屬性。不過,Experience Manager用戶介面會更新dc
命名空間中的元資料屬性。
Assets HTTP API會公開兩個主要元素、資料夾和資產(適用於標準資產)。
資料夾與傳統檔案系統中的目錄類似。 它們是其他資料夾或聲明的容器。 資料夾具有下列元件:
實體:資料夾的實體是其子元素,可以是資料夾和資產。
屬性:
name
是資料夾的名稱。這與URL路徑中沒有副檔名的最後一個區段相同。title
是資料夾的選用標題,可顯示該標題而非其名稱。資料夾或資產的某些屬性會對應至不同的首碼。 jcr
前置詞jcr:title
、jcr:description
和jcr:language
會以dc
前置詞取代。 因此,在傳回的JSON中,dc:title
和dc:description
分別包含jcr:title
和jcr:description
的值。
LinksFolders公開三個連結:
self
:連結到自己。parent
:連結至父資料夾。thumbnail
:(選用)連結至資料夾縮圖影像。在Experience Manager中,資產包含下列元素:
在Experience Manager中,資料夾具有以下元件:
Assets HTTP API包含下列功能:
為方便閱讀,下列範例會忽略完整的cURL標籤法。 事實上,標籤法會與Resty關聯,後者是cURL
的指令碼包裝函式。
必備條件
https://[aem_server]:[port]/system/console/configMgr
.POST
、PUT
、DELETE
。檢索現有資料夾及其子實體(子資料夾或資產)的Siren表示。
請求: GET /api/assets/myFolder.json
回應代碼:回應代碼為:
回應:傳回的實體類別為資產或資料夾。包含的實體的屬性是每個實體的全部屬性集的子集。 為了獲得實體的完整表示,客戶端應檢索連結所指向的URL的內容,該連結具有self
的rel
。
建立新的sling
:OrderedFolder
。 如果提供*
而非節點名稱,則servlet將參數名稱用作節點名稱。 接受為請求資料是新資料夾的Siren表示法或一組名稱值對,編碼為application/www-form-urlencoded
或multipart
/ form
- data
,對於直接從HTML表單建立資料夾非常有用。 此外,資料夾的屬性可指定為URL查詢參數。
如果提供路徑的父節點不存在,則API呼叫會因500
回應代碼而失敗。 如果資料夾已存在,呼叫會傳回回應代碼409
。
參數: name
是資料夾名稱。
要求
POST /api/assets/myFolder -H"Content-Type: application/json" -d '{"class":"assetFolder","properties":{"title":"My Folder"}}'
POST /api/assets/* -F"name=myfolder" -F"title=My Folder"
回應代碼:回應代碼為:
將提供的檔案放置在提供的路徑中,以便在DAM存放庫中建立資產。 如果提供*
而不是節點名稱,則servlet將參數名或檔案名用作節點名。
參數:參數是 name
用於資產名稱和 file
檔案參考。
要求
POST /api/assets/myFolder/myAsset.png -H"Content-Type: image/png" --data-binary "@myPicture.png"
POST /api/assets/myFolder/* -F"name=myAsset.png" -F"file=@myPicture.png"
回應代碼:回應代碼為:
更新資產的二進位檔(名稱為原始的轉譯)。 更新會觸發預設資產處理工作流程來執行(如果已設定)。
請求: PUT /api/assets/myfolder/myAsset.png -H"Content-Type: image/png" --data-binary @myPicture.png
回應代碼:回應代碼為:
更新資產中繼資料屬性。 如果您更新dc:
命名空間中的任何屬性,API會更新jcr
命名空間中的相同屬性。 API不會同步兩個命名空間下的屬性。
請求: PUT /api/assets/myfolder/myAsset.png -H"Content-Type: application/json" -d '{"class":"asset", "properties":{"jcr:title":"My Asset"}}'
回應代碼:回應代碼為:
dc
和jcr
命名空間之間同步中繼資料更新API方法會更新jcr
命名空間中的中繼資料屬性。 使用觸控式UI進行的更新會變更dc
命名空間中的中繼資料屬性。 若要在dc
和jcr
命名空間之間同步中繼資料值,您可以建立工作流程並設定Experience Manager,以便在資產編輯時執行工作流程。 使用ECMA指令碼來同步所需的中繼資料屬性。 以下示例指令碼在dc:title
和jcr:title
之間同步標題字串。
var workflowData = workItem.getWorkflowData();
if (workflowData.getPayloadType() == "JCR_PATH")
{
var path = workflowData.getPayload().toString();
var node = workflowSession.getSession().getItem(path);
var metadataNode = node.getNode("jcr:content/metadata");
var jcrcontentNode = node.getNode("jcr:content");
if (jcrcontentNode.hasProperty("jcr:title"))
{
var jcrTitle = jcrcontentNode.getProperty("jcr:title");
metadataNode.setProperty("dc:title", jcrTitle.toString());
metadataNode.save();
}
}
為資產建立新的資產轉譯。 如果未提供請求參數名稱,則會將檔案名稱用作格式副本名稱。
參數:參數用 name
於格式副本的名稱, file
並作為檔案引用。
要求
POST /api/assets/myfolder/myasset.png/renditions/web-rendition -H"Content-Type: image/png" --data-binary "@myRendition.png"
POST /api/assets/myfolder/myasset.png/renditions/* -F"name=web-rendition" -F"file=@myRendition.png"
回應代碼:回應代碼為:
更新會分別以新的二進位資料取代資產轉譯。
請求: PUT /api/assets/myfolder/myasset.png/renditions/myRendition.png -H"Content-Type: image/png" --data-binary @myRendition.png
回應代碼:回應代碼為:
建立新資產註解。
參數:參數適 message
用於註解的訊息內文,以 annotationData
及JSON格式的附註資料。
請求: POST /api/assets/myfolder/myasset.png/comments/* -F"message=Hello World." -F"annotationData={}"
回應代碼:回應代碼為:
複製提供路徑中可用的資料夾或資產,以前往新目的地。
請求標題:參數為:
X-Destination
- API解決方案範圍內的新目標URI,可將資源複製到。X-Depth
- infinity
或 0
。使用0
只會複製資源及其屬性,而不會複製其子項。X-Overwrite
— 使 F
用防止覆寫現有目的地的資產。請求: COPY /api/assets/myFolder -H"X-Destination: /api/assets/myFolder-copy"
回應代碼:回應代碼為:
將指定路徑的資料夾或資產移至新目的地。
請求標題:參數為:
X-Destination
- API解決方案範圍內的新目標URI,可將資源複製到。X-Depth
- infinity
或 0
。使用0
只會複製資源及其屬性,而不會複製其子項。X-Overwrite
— 使用強 T
制刪除現有資源或 F
防止覆寫現有資源。請求: MOVE /api/assets/myFolder -H"X-Destination: /api/assets/myFolder-moved"
回應代碼:回應代碼為:
刪除提供路徑上的資源(-tree)。
要求
DELETE /api/assets/myFolder
DELETE /api/assets/myFolder/myAsset.png
DELETE /api/assets/myFolder/myAsset.png/renditions/original
回應代碼:回應代碼為: