我需要您有关REST Arch的帮助。我有一个资源,可以使用经典的GET / resource / ID URI对其进行检索,但是该资源具有别名,有人想通过别名调用此资源来获取该资源。
调用GET / resource /?alias = x,获取ID,然后转到详细信息/ resource / ID,是一种很好的方法。
您对其他方法有什么好主意吗?
提前致谢
如果要保持在REST体系结构的约束之内,则绝对需要保持动词GET。您无法添加其他方法。
现在,您需要确定资源的命名方式。您有一个规范名称(您的ID)和一个别名。一种方法是为
GET /things/:id
使:id
能要么规范ID或别名。所以你有
app.get('/resources/id', function (req, res) {
var id = req.params.id;
if (isAlias(id)) id = resolveAlias(id);
Thing.findById(id, null, function (err, thing) {
if (err) res.json(400, err)
if (thing === null) res.json(404, {"No such id": id})
res.json(thing)
});
});
您也可以像建议的那样将别名作为查询参数。
我怀疑唯一的其他方法可能是使用其他网址(不是things
),但这是不合理的,因为无论您使用id还是别名,您都想返回相同的表示形式。它应该是同一控制器,并且应该使用GET,所以我相信您需要使用path参数或query参数。
顺便说一下,该选择独立于查询重写。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句