【发布时间】:2020-03-19 17:51:00
【问题描述】:
我刚开始研究 Node.js 和 Express.js 框架。 我很努力,但我不知道如何解决这些问题......我希望你们能帮助我解决这些问题。谢谢你:)
这是我的问题:
-
删除 /book?title=:book_title
- 即使图书不在数据存储区中,也始终返回 204 Not Content 状态代码。
- 没有响应正文。
-
获取/书籍
- 返回 200 成功状态码。
- 返回所有书籍的列表。
- 返回格式必须是 JSON: { "books": [{ "author":"joe", "title":"MyBook", "pages":234, "quality":"new"}, ... ] }
-
PUT /书
- 根据书名更新列表中的一本书。
- 找到图书并成功更新时返回 200 Success 状态码。
- 返回以 JSON 格式的单本书作为响应正文: 前任。 {“书”:{“作者”:“乔”,“标题”:“MyBook”,“页面”:234,“质量”:“新”}} 只要正文包含书籍及其所有字段,格式就无关紧要。
- 对于 PUT,请让您的应用程序接受内容类型 JSON 的请求正文,并在查找图书时将标题视为标识符 例如,您的 cURL 可能如下所示: curl localhost:3000/book -X PUT -d '{"title":"...", "author":"...", ... }' -H '内容类型:application/json'
- 请求正文可以包含书籍的任何属性,因此如果匹配的属性在请求正文中有新值,则更新它,否则忽略它 例如,如果请求正文是 {"title":"currentTitle", "author":"newtitle","nonexistentattribute":"nonexistentvalue"},则数据存储将使用新的“author”更新标题为“currentTitle”的书值,但忽略“不存在的属性”,因为它不作为书籍的属性存在。
- 如果在内存数据存储中找不到标题,则向用户返回 404 状态响应代码和您想要的任何正文。
const express = require('express');
const app = express();
var books = {
"books": [{
"author": "joe",
"title": "MyBook",
"pages": 234,
"quality": "new"
},
{
"author": "kevin",
"title": "YourBook",
"pages": 432,
"quality": "old"
}
]
}
app.delete('/book?title=:book_title', (req, res) => {
res.send(req.params.book_title);
res.status(204);
});
app.get('/books', (req, res) => {
res.status(200).send(JSON.stringify(books));
});
app.put('/book', (req, res) => {
// have no idea..
});
app.listen(3000, () => console.log("listening on port 3000"));
【问题讨论】:
-
不确定 express 是否解析 url 的查询字符串部分以获取路由参数,因为您可以使用
req.query.book_title来获取它。尝试将其作为路径的一部分,例如前端的/book/:book_title网址将类似于http://example.com/book/somebook看看这是否有所不同 -
@PatrickEvans 我试过但仍然“无法获取 /book/:book_title”...
-
...实际上我对实际问题感到困惑...所有要点都是问题列表还是需求列表
-
@PatrickEvans 这是每个号码的所有要求。
标签: javascript node.js express