rest - 使用 REST API 添加 VersionOne 表达式

标签 rest versionone

我正在尝试在 VersionOne 中创建一个新的“表达式”——有效地向对话添加一个新的“评论”。

理论上,rest-1.v1/Data API 应该允许这样做,但我不知道该怎么做——关于使用 API(使用 POST)创建对象的宝贵文档很少。

FWIW,这是我正在做的(在使用有效凭据成功访问服务器之后):

网址: /rest-1.v1/数据/表达式

XML:

<Asset href="<Server Base URI>/rest-1.v1/Data/Expression">
<Attribute name="AssetType">Expression</Attribute>
<Relation name="InReplyTo" />
<Attribute name="AuthoredAt">2014-05-28T21:48:37.940</Attribute>
<Attribute name="Content">A new comment</Attribute>
<Attribute name="AssetState">64</Attribute>
<Relation name="Author">
  <Asset href="<Server Base URI>/rest-1.v1/Data/Member/2015" idref="Member:2015" />
</Relation>
<Relation name="BelongsTo">
  <Asset href="<Server Base URI>/rest-1.v1/Data/Conversation/2018" idref="Conversation:2018" />
</Relation>
<Attribute name="Author.Name">user@example.com</Attribute>
<Attribute name="Author.Nickname">User Name</Attribute>
<Relation name="Mentions">
  <Asset href="<Server Base URI>/rest-1.v1/Data/Story/2017" idref="Story:2017" />
</Relation>
</Asset>

我不断收到 400 Bad Request 错误:

<Error href="<Server Base URI>/rest-1.v1/Data/Expression">
<Message>Violation'Required'AttributeDefinition'Content'Expression</Message>
<Exception class="VersionOne.DataException">
<Message>Violation'Required'AttributeDefinition'Content'Expression</Message>
</Exception>
</Error>

我想我遗漏了一些明显的东西 - 有人知道它是什么吗?

最佳答案

如果您检查 VersionOne 表达式的元数据,您将看到 3 个必填字段(Author、AuthoredAt、Content)。从逻辑上讲,能够创建一个单一的僵尸表达式是有道理的,但我亲眼目睹了其他情况。这可能是样式表中的一个错误,或者只是我的浏览器中的一个错误,因为看起来只有这三个的 POST 将返回 400 错误。要获得有保证的有效负载,请包含关系“inReplyTo”,这就是您在特定对话的上下文中创建表达式所需的全部内容。

鉴于您正在回应现有的表达(评论),这应该可以正常工作。

POST to rest-1.v1/Data/Expression

<Asset>
  <Relation name="Author" act="set">
     <Asset idref="Member:2015" />
  </Relation>

  <Attribute name="AuthoredAt">2014-05-02T21:48:37.940</Attribute>  

  <Attribute name="Content" act="set">A new comment</Attribute>

  <Relation name="InReplyTo" act="set">
     <Asset idref="Expression:xxxxx" /> 
  </Relation>
</Asset>

您不需要 Assets 状态或提及或属于。 AssetState 是只读的,BelongsTo 是在你的 Expression 创建后自动填充的。它从在 InReplyTo 字段中输入的 Expression 对象继承对包含 Conversation 的引用,并且 Mentions 关系是可选的。

仅供引用, 我相信您没有在浏览器中看到元查询输出右侧的图例。这里真的很快,当你做一个元查询时,带 * 的项目是 Post 所必需的,粗体项目是读/写可选的,斜体项目是只读的,底部的粗体项目附加了“:操作”是您可以针对该特定 Assets 执行的操作。

关于rest - 使用 REST API 添加 VersionOne 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23938833/

相关文章:

ios - 如何在 iOS 上使用 ASIHTTPRequest 发送 PATCH 请求

versionone - 如何使用 URL 查看版本一积压项目?

java - 如何使用版本一 java REST 客户端将版本一工作 url(端点)转换为 java 查询

api - 如何使用第一版 api 获取项目和冲刺燃尽图?

java - 为什么 VersionOne 无法识别 Assets 类型?

rest - 有没有办法在没有用户的情况下访问 LinkedIn API

php - Paypal验证任意支付

javascript - 运行 VersionOne Javascript SDK 的 example.js 时发生 ETIMEOUT

javascript - 如何分离编辑和更新上下文(admin-on-rest,点符号)

Rest EJB 项目未部署在 Wildfly 8.0 上