2015-06-03 74 views
0

persistence API documentation說:Orbeon - 持久性API是否不支持POST來創建表單數據?

當使用GET,PUT和DELETE來處理資源,HTTP請求的主體只包含資源來處理。

這似乎表明POST不是受支持的操作。該文檔只提到了GET,PUT和DELETE。

我看過其他地方(我不記得在哪裏),這是可以張貼到:

http://[SERVER]/orbeon/fr/[APP_NAME]/[FORM_NAME]/new

我測試了這一點,它的工作原理,但沒有使用REST API。它返回一個供用戶開始編輯表單數據的頁面。這不是我正在尋找的。我本來期望能夠做一個POST到

http://[SERVER]/orbeon/fr/service/persistence/crud/[APP_NAME]/[FORM_NAME]/data/

而且,新創建的表格數據(包括其文檔ID)的位置將在響應的Location頭返回。但是做POST會返回500錯誤。堆棧跟蹤似乎表明某種驗證異常。這不支持?

回答

1

正確,持久性API不支持POST,但是您的can POST to the /new page,這是兩個完全不同的東西。因此,如果您想直接調用持久性API,並且想要創建一個新文檔,則需要「選取」一個文檔ID。你可以使用相同的代碼Form Runner調用:secure:randomHexId(),在SecureUtils.scala中實現。

+0

您的意思是說我可以對'http:// [SERVER]/orbeon/fr/service/persistence/crud/[APP_NAME]/[FORM_NAME]/data/[MY_GENERATED_DOCUMENT_ID]/data.xml執行PUT ?我嘗試了這一點,但我得到了400 - 壞請求。 – awilkinson

+0

我正在使用頭文件'Content-Type:application/xml'。我也嘗試使用URL參數'valid = false'。我正在使用的內容直接從GET獲取相同的表單。我只是將文檔ID中的最後一個數字從「4」更改爲「5」。 – awilkinson

+0

我使用的文檔ID應該是一個有效的十六進制ID。如果我將文檔ID更改回用於GET的現有文檔ID,它將正常工作,並返回201 - 創建。 – awilkinson