我正在设计一个RESTful API,并遇到标题问题,为清楚起见已重述:
如果客户端发送无法识别的参数,我应该快速失败吗?例如,
http://example.com/api/foo?bar=true&paula=bean
在上面,bar
是有效参数,但paula
API未指定。我是不是该
- 警告客户错误
- 快速失败
- 忽略它
如果我警告客户端,我只能对第一个参数发出警告,因为它们可能发送的数量几乎是无限的,并且服务器可能要做的更好。同样,失败时,只会将第一个无效参数指定为问题。
我更喜欢失败而不是发出警告来迫使程序员采取行动,因为否则他们可能会忽略问题并继续浪费资源,或者最终不经意地养成自己。在这方面什么都不做会更糟。
我的论点有意义吗?在这种事情上有公认的做法吗?
根据一项小型测试,我测试的所有站点都只是忽略了我为其提供的未知参数。
—
Bart van Ingen Schenau'3
@BartvanIngenSchenau这里也是。对于网页来说很好,但我认为对于实际的API来说
—
还不行
一个问题是前向兼容性。如果忽略了未知参数,则可以在将来的版本中使用它们,以便客户端可以编程到新API并在旧服务器上仍然获得合理的行为。
—
walpen '16
@walpen这是一个有趣的观点。使用版本化的URL
—
拉斯
api/v1
等可以解决这个问题,但是仍然不允许增量更新。+1
在这里,您可以从实际的角度找到一些优缺点:严格参数和您的API。
—
Remek Ambroziak