我必须使用Node构建一个API并将其表达为具有以下要求的包:
在
/api/posts
上删除 - 会有一个查询参数:id
。如果 服务器有一个具有给定ID的帖子,它应该删除它和 响应应该只是200状态代码。不应该有其他帖子 受到影响;特别是,他们的ID不会改变。如果服务器没有 有一个具有给定ID的帖子,响应应该是404状态 代码。
我有以下代码可以正常使用
app.delete('/api/posts', (req, res) => {
let id = req.query.id;
if (typeof id !== 'number')
id = parseInt(id, 10);
let index;
for (let i = 0; i < posts.length; i += 1) {
if (posts[i].id === id) {
index = i;
break;
}
}
if (index == null) {
res.status(404).send();
return;
}
posts.splice(index, 1);
res.json(posts);
});
我的问题是,如果这种方法是正确的还是可以进一步改进代码? 我刚开始学习API和Node ....
答案 0 :(得分:3)
我不喜欢路线定义中的逻辑。 所以我会这样写:
route.js:
const posts = require('./posts.js')
app.delete('/api/posts', (req, res) => {
posts.delete(req.query.id)
.then(res.json)
.catch(() => { res.status(404).send() })
})
posts.js:
class posts {
constructor() {
this.posts = []
}
add(newPost) {
this.posts.push(newPost)
}
delete(postId) {
if (// test ob gelöscht werden kann) {
// löschen
return Promise.resolve(this.posts)
} else {
return Promise.reject(new Error('Can not delete post'))
}
}
}
这更像是伪代码,但希望你明白我的意思。 我能够毫无困难地识别出路线的作用和需要的东西。如果我满足要求并得到错误,那么我深入研究类定义。对我来说,这是更好的可维护性。