我正在编写一个RESTful Web服务API。我将Answer
资源发布到机械问题上。当我这样做时,我想知道我的回答是否正确。为此,我有一个Result
资源。
在HTTP请求中返回与您发布的资源不同的资源是错误的吗?
实施例:
POST /mechanical-questions/4/answers
- 回复结果。
答案将保存在服务器上,但结果也是如此。我应该将HttpStatus 20x代码与Location标头一起返回,以指示我可以在哪里找到测验结果或答案,以及响应实体应该是什么?创建的答案或测验结果?
答案 0 :(得分:2)
显然,对此没有一个'正确'的答案。我认为你说你不应该将RESULT对象返回给接收ANSWER对象的端点是正确的。对我来说,我认为返回Location:标题有点奇怪。在创建之后,应该由消费客户端决定他们想要对ANSWER对象做什么。我有时看到的是POST响应对象中的location属性。
所以你有这样的请求
{
'answer' : 'I hope I am correct'
}
这样的反应
{
'id' : 12345
'answer' : 'I hope I am correct'
'result_id' : 68472
'result_location' : '/mechanical-questions/4/result/68472'
}
这允许客户端在用户做出回答后确定流程 - 也许他们会立即对结果进行GET并显示它,或者在回答一系列问题后捆绑多次获取响应。< / p>
答案 1 :(得分:0)
我认为你肯定会返回一个OK代码,因为它是一个完全有效的情况。它也不是服务器错误或错误请求或类似的东西。
对于响应实体,这实际上取决于您的业务逻辑,至少从我的角度来看。开发人员之间有点争议。如果您希望您的客户在任何一种情况下都能得到正确的答案,那么只需将答案本身。如果客户端在获得答案之前应该尝试几次,那么可能会将URL放到响应实体中。你甚至可以做到这两点......