JSON API 设计-快递
JSON API design - express
我要写一篇JSONAPI.
我的问题是,有时我想查询 ID,有时想查询字符串。
一种选择是添加查询字符串,例如:
example.com/user/RandomName
example.com/user/1234556778898?id=true
并像这样使用它:
api.get('user/:input', function(req, res) {
if(req.query.id) {
User.find({ '_id': req.params.input }, cb);
} else {
User.find({ 'name': req.params.input }, cb);
}
};
但这对我来说似乎是不好的做法,因为它会导致一堆条件表达式。
还有更优雅的方式吗?
我建议处理两个端点。一种用于获取 ALL 个用户,另一种用于通过 ID 获取 SPECIFC 个用户。
example.com/users
example.com/users/:id
第二个终结点可用于按 ID 查找特定用户。
第一个端点可用于查找所有用户,但过滤器可应用于此端点。
例如:example.com/users?name=RandomName
通过这样做,您可以非常轻松地根据 URL 中的参数在您的节点服务中创建查询。
api.get('/users', function(req, res) {
// generate the query object based on URL parameters
var queryObject = {};
for (var key in req.query) {
queryObject[key] = req.query[key];
}
// find the users with the filter applied.
User.find(queryObject, cb);
};
通过这种方式构建端点,您将遵循 RESTful API 标准,这将使其他人很容易理解您的代码和您的 API。此外,您正在构建一个适应性强的 API,因为您现在可以通过将字段作为参数添加到 URL.
按任何字段过滤用户
有关何时使用路径参数与 URL 参数的更多信息,请参阅 this response。
我要写一篇JSONAPI.
我的问题是,有时我想查询 ID,有时想查询字符串。
一种选择是添加查询字符串,例如:
example.com/user/RandomName
example.com/user/1234556778898?id=true
并像这样使用它:
api.get('user/:input', function(req, res) {
if(req.query.id) {
User.find({ '_id': req.params.input }, cb);
} else {
User.find({ 'name': req.params.input }, cb);
}
};
但这对我来说似乎是不好的做法,因为它会导致一堆条件表达式。 还有更优雅的方式吗?
我建议处理两个端点。一种用于获取 ALL 个用户,另一种用于通过 ID 获取 SPECIFC 个用户。
example.com/users
example.com/users/:id
第二个终结点可用于按 ID 查找特定用户。
第一个端点可用于查找所有用户,但过滤器可应用于此端点。
例如:example.com/users?name=RandomName
通过这样做,您可以非常轻松地根据 URL 中的参数在您的节点服务中创建查询。
api.get('/users', function(req, res) {
// generate the query object based on URL parameters
var queryObject = {};
for (var key in req.query) {
queryObject[key] = req.query[key];
}
// find the users with the filter applied.
User.find(queryObject, cb);
};
通过这种方式构建端点,您将遵循 RESTful API 标准,这将使其他人很容易理解您的代码和您的 API。此外,您正在构建一个适应性强的 API,因为您现在可以通过将字段作为参数添加到 URL.
按任何字段过滤用户有关何时使用路径参数与 URL 参数的更多信息,请参阅 this response。