我正在尝试使用Crucible REST API将评论者添加到我刚刚创建的评论中(也使用REST)。根据Atlassian文档,我应该发布一个POST:
/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
是有效名称,因为当我对同一网址执行GET时,我可以在其他评论中看到它们。
有人有什么想法吗?
谢谢!
答案 0 :(得分:3)
嗯,对于它的价值,以下是如何将评论者添加到现有评论中:
对Crucible URL进行POST:protocol:// server:port / context / rest-service / reviews-v1 / {id} / reviewers
帖子的正文应包含文字值:user1,user2,user3
抵制JSON-ify数据的冲动 - 没有引号,没有括号,标签等。它实际上是一个逗号分隔的要添加的用户名列表。
不要指望来自服务器的响应,它似乎返回204的状态代码。虽然这可以作为一个宁静的响应,但它似乎很奇怪,因为这个API的许多其他URL确实会返回一些东西执行POST以确认工作已完成。
为了公平对待Atlassian,文档会拼出要发送的数据:
“以逗号分隔的评论者列表”
但是文档可能应该用一个例子来更新,因为我认为某人(至少对我来说)假设在使用RESTful API时,他们需要将数据格式化为JSON是正常的。此外,文档应更谨慎地说明服务器不会在成功时发送响应。也就是恕我直言。
希望能帮助别人!