2

我正在设计一个 API,并且我有两个必需参数,这是此操作所必需的

我有两个选择通过它们

1) /servers/server_id/exte/device_id/agents/agent_id/live_monitoring

缺点:太长了

2) /servers/server_id/live_monitoring?device_id=23&agent_id=767

缺点:这些参数不应该是查询参数,因为它们是必需的而不是可选的

我应该采用哪种方法?

4

2 回答 2

1

你应该决定

  • 如果此参数定义子资源,那么您应该使用 /parent/:id/child/:child_id url
  • 如果此参数仅用于过滤数据,则应使用 ?param_1=parm_1_value

关于长网址如果您不需要检查访问权限或其他属于父资源的内容,您可以使用

/server/{:server_id|/exte/{:device_id}/agent/{:agent_id}/live_monitoring

或者

/agent/{:agent_id}/live_monitoring

但这将是两种不同的资源

于 2013-12-07T06:36:36.313 回答
0

您最好使用查询参数(这是 RESTful 方法),但在端点端处理它们以在未提供它们时返回错误。

例如,在 php 中,你会这样做:

if (!isset($_GET['device_id']))
    echo json_encode(array("error"=>"You need to provide device_id"));
if (!isset($_GET['agent_id']))
    echo json_encode(array("error"=>"You need to provide agent_id"));
于 2013-12-07T04:56:25.407 回答