在REST GET请求中传递两个必需参数的最佳实践

时间:2013-11-08 14:18:53

标签: api api-design

我正在设计API,并且我已经为此操作强制执行了两个必需参数

我有两种选择来传递它们

1) /服务器/ SERVER_ID / EXTE / DEVICE_ID /剂/ AGENT_ID / live_monitoring

缺点:太长了

2) /服务器/ SERVER_ID / live_monitoring DEVICE_ID = 23&安​​培; AGENT_ID = 767

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

我应该采用哪种方法?

2 个答案:

答案 0 :(得分: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

但这将是两个不同的资源

答案 1 :(得分: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"));