2015-06-03 17 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