带参数的REST资源

时间:2015-02-13 00:03:21

标签: rest architecture restful-url restful-architecture

这是一个问题。这是我们的简单领域:有许多问题和答案,一个问题可能有几个答案或没有任何答案。

例:
问题:“我在哪里可以买笔?” 回答#1:“你可以在商店买笔。”
回答#2:“你可以从朋友那里借用它。”

对于以下情况,可以使用以下REST资源:

GET /questions
GET /questions/{question_id}

GET /questions/{question_id}/answers
GET /questions/{question_id}/answers/{answer_id}

但有些问题可能包含以下参数:

{位置A} {位置B} 之间的距离是多少?” “航班的状态是什么 {flight_number} ?”

将这些问题和答案表示为REST资源的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用以下链接:

GET /questions/{question_id}/locationA:Zurich/locationB:Budapest/flightNumber:1234/answers

GET /questions/{question_id}/answers?locationA="Zurich"&locationB="Budapest"&flightNumber=1234

现在我不确定你在这里需要问题ID。如果问题类型数量有限,则可以为每个类型添加路径。

GET /questions/distance/from:"Zurich"/to:"Budapest"

您可以从问题标题中自动生成此内容:

GET /questions/what-is-the-distance/between:"Zurich"/and:"Budapest"

说实话,REST服务并不重要,因为它只由机器使用,也可能由开发人员用来配置路由。 REST客户端应该遵循链接而不是构建URI(HATEOAS constraint)。因此,大多数API不是REST,大多数客户端不是REST客户端......

答案 1 :(得分:0)

好的,我认为你可以建立这样的东西

GET /question /{questionid}?location=a&location2=b

GET /question /{questionid}?number=12345

但是,它需要考虑很多事情。

谁定义了参数名称是什么?询问问题的是来电者吗?我想,如果没有更多关于参与这些服务的参与者的想法,那么很难更具体。

很抱歉,这并不像我希望的那样有用。 :)

答案 2 :(得分:0)

如果考虑POST,我知道你正在提出问题,但同时你正在创建一个填写变量的问题。

将变量作为主体中的键值对(或词典)列表提供。