5

我正在尝试使用 Crucible REST API 将评论者添加到我刚刚创建的评论中(也使用 REST)。根据 Atlassian 文档,我应该发布到:

/rest-service/reviews-v1/{id}/reviewers

什么?文档未显示添加审阅者的有效请求。当您单击“扩展”时,它不显示任何内容,它只是显示“逗号分隔的审阅者”,这似乎不起作用。

我试过了:

user1,user2

{"user1","user2"}

{reviewers:[reviewer:{"userName":"user1"},reviewer:{"userName":"user2"}]}

所有这些都会导致以下响应:

{"code":"NotFound","message":"The user named '{\"user1\"' is not a Crucible user.","stacktrace":"com.atlassian.crucible.spi.services.NotFoundException: The user named '{\"user1\"' is not a Crucible user.
at com.atlassian.crucible.spi.impl.DefaultReviewService.getUser(DefaultReviewService.java:2011)
at com.atlassian.crucible.spi.impl.DefaultReviewService.access$3500(DefaultReviewService.java:95)
at com.atlassian.crucible.spi.impl.DefaultReviewService$32.doInTransaction(DefaultReviewService.java:1973)
at com.atlassian.crucible.spi.impl.DefaultReviewService$32.doInTransaction(DefaultReviewService.java:1965)
at com.atlassian.fisheye.spi.impl.DefaultTxTemplate.execute(DefaultTxTemplate.java:123)
at sun.reflect.GeneratedMethodAccessor1317.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
...

该堆栈跟踪一直在继续......

user1并且user2是有效名称,因为当我对同一 URL 执行 GET 操作时,我可以在其他评论中看到它们。

有人有想法么?

谢谢!

4

1 回答 1

3

好吧,对于它的价值,这里是如何将评论者添加到现有评论中:

  1. 对 Crucible URL 进行 POST:protocol://server:port/context/rest-service/reviews-v1/{id}/reviewers

  2. 帖子的正文应包含文字值:user1,user2,user3

  3. 抵制 JSON 化数据的冲动 - 没有引号、括号、标签等。它实际上是一个逗号分隔的待添加用户名列表。

  4. 不要期望来自服务器的响应,它似乎返回 204 的状态代码。虽然这作为一个安静的响应是可以接受的,但它看起来很奇怪,因为当您执行 POST 确认时,此 API 的许多其他 URL 确实返回了一些东西工作已经完成。

为了公平起见,文档确实详细说明了要发送的数据:

“逗号分隔的审稿人列表”

但是文档可能应该用一个例子来更新,因为我认为有人(至少对我来说)假设在使用 RESTful API 时,他们需要将数据格式化为 JSON 是正常的。此外,文档应该更谨慎地说明服务器不会发送成功响应。也就是说,恕我直言。

希望对某人有所帮助!

于 2013-03-20T04:02:56.887 回答