2016-02-14 43 views
3

我想創建一個自定義終端來上傳文件,我可以使用通用的Rest API存根並使用POST方法獲取文件內容..我在文檔中看到Rest擴展API上傳marklogic中的文件

在MarkLogic 8,在單語句事務POST方法查詢方式

執行什麼意思?我可以只做以下幾點,

declare function repo:post($context as map:map, $params as map:map,$input as document-node()*) as document-node()* 
{ 
    let $filename := xdmp:get-request-field-filename("upload") 
    let $contentType := xdmp:get-request-field-content-type("upload") 
...... 
}; 

這會採取「multipart/form-data;」 ??有什麼我能看的例子嗎?上述方式似乎並沒有爲我工作

我也試過(愛註釋)使用RXQ(https://github.com/xquery/rxq),但失敗了的multipart/form-data的..

對如何處理任何指針將是真正有用的..

感謝, 拉維

+0

可以共享至關重要你的表單的位? – grtjn

+0

當我使用ML8開箱即用的URL重寫器/MarkLogic/rest-api/rewriter.xml)它一切正常..我使用「rxq」的自定義URL重寫器,因爲它支持註釋,所以我不需要爲每個端點創建一個獨立的xqy ..但是看起來像rxq在ML8中失敗.. – Ravi

+1

是的,ML8的新聲明性重寫器使得它更難以擴展內置的.. – grtjn

回答

3

如果你只想寫一個文檔,可以考慮使用內置的REST端點:

http://docs.marklogic.com/REST/PUT/v1/documents

如果你想在文件被寫入,同時執行一些自定義邏輯,一個簡單的方法是指定一個變換,它執行的副作用動作,只是通過原稿不變:

http://docs.marklogic.com/guide/rest-dev/transforms

如果您的定製邏輯必須處理的寫​​入,考慮使用PUT方法:

http://docs.marklogic.com/REST/PUT/v1/resources/%5Bname%5D

當編寫一個單一的文件,你指定的MIME標識文檔格式的類型。在編寫一批文檔時,應將批處理打包爲多部分/混合有效內容,其中每個部分指定文檔格式的MIME類型。

使用REST擴展時,您不需要與HTTP進行交互。 REST API爲你做到這一點,獲取文檔並將其傳遞給你的函數。你只寫有預期的簽名功能:

http://docs.marklogic.com/guide/rest-dev/extensions#id_75991

而且隨着功能安裝庫模塊:

http://docs.marklogic.com/guide/rest-dev/extensions#id_59112

希望幫助,