拿到後我有這個REST API:快遞REST由塞
'use strict';
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Post = mongoose.model('Post'),
_ = require('lodash');
/**
* Find post by id
*/
exports.post = function(req, res, next, id) {
Post.findOne({ '_id': id }, function (err, post) {
if (err) {
return next(err);
}
if (!post) {
return next(new Error('Failed to load post ' + id));
}
req.post = post;
next();
});
};
/**
* Create a post
*/
exports.create = function(req, res) {
var post = new Post(req.body);
post.save(function(err) {
if (err) {
res.jsonp(500,{ error: err.message });
} else {
res.jsonp(post);
}
});
};
/**
* Update a post
*/
exports.update = function(req, res) {
var post = req.post;
post = _.extend(post, req.body);
post.save(function(err) {
if (err) {
res.jsonp(500,{ error: err.message });
} else {
res.jsonp(post);
}
});
};
/**
* Delete a post
*/
exports.destroy = function(req, res) {
var post = req.post;
post.remove(function(err) {
if (err) {
res.jsonp(500,{ error: err.message });
} else {
res.jsonp(post);
}
});
};
/**
* Show a post by id
*/
exports.show = function(req, res) {
res.jsonp(req.post);
};
/**
* List of public posts
*/
exports.all = function(req, res) {
Post.find().sort('-created').exec(function(err, posts) {
if (err) {
res.jsonp(500,{ error: err.message });
} else {
res.jsonp(200,posts);
}
});
};
與
/* Post */
var postController = require('../app/controllers/api/post');
app.post('/api/post', postController.create);
app.get('/api/post', postController.all);
app.put('/api/post/:postId', postController.update);
app.del('/api/post/:postId', postController.destroy);
app.get('/api/post/:postId', postController.show);
/* Post Param */
app.param('postId', postController.post);
現在我需要像 API的其他路線/後/:塞
但我不知道你能給我一個提示嗎? 可以用slu instead代替id來管理嗎?
像
exports.post = function(req, res, next, slug) {
Post.findOne({'slug': slug}, function (err, post) {
if (err) {
return next(err);
}
if (!post) {
return next(new Error('Failed to load post ' + slug));
}
req.post = post;
next();
});
};
這是行不通的。 ':postId'和':slug'只是變量名稱。路線保持不變。 – Amberlamps
我的意思是使用slu instead代替所有的ID我有獨特的slu and和索引 – Whisher
如果你不需要':postId'和':slug'的不同路由,我不知道你的問題是什麼?那麼只需使用給定的路線來「:slug」。 – Amberlamps