我正在设计一个 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
缺点:这些参数不应该是查询参数,因为它们是必需的而不是可选的
我应该采用哪种方法?
我正在设计一个 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
缺点:这些参数不应该是查询参数,因为它们是必需的而不是可选的
我应该采用哪种方法?
你应该决定
关于长网址如果您不需要检查访问权限或其他属于父资源的内容,您可以使用
/server/{:server_id|/exte/{:device_id}/agent/{:agent_id}/live_monitoring
或者
/agent/{:agent_id}/live_monitoring
但这将是两种不同的资源
您最好使用查询参数(这是 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"));