- 一、什么是 Serverless
- 二、编写你的第一个 Serverless 应用
- 三、Serverless 应用是怎么运行的
- 四、如何提高应用开发调试和部署效率
- 五、serverless 应用
- 阿里云函数计算
- 腾讯云函数
- 使用 vercel 部署你的应用-推荐
- 六、场景案例
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2.6 发布文章
发布文章的接口定义如下。
- 请求方法:POST。
- Path:/article/create
- Headers 参数: Authorization token。
- Body 参数:title、content。
由于登录后才能发布文章,所以要先通过登录接口获取 token,然后调用 /article/create 接口时,再将 token 放在 HTTP Headers 参数中。发布文章的代码实现如下:
// src/function/article/auth const uuid = require("uuid"); const auth = require("../../middleware/auth"); const client = require("../../db/client"); /** * 创建文章 * @param {string} username 用户名 * @param {string} title 文章标题 * @param {string} content 文章内容 */ async function createArticle(username, title, content) { const article_id = uuid.v4(); const now = new Date().toLocaleString(); await client.createRow( "article", { article_id, }, { username, title, content, create_date: now, update_date: now, } ); return article_id; } module.exports.handler = function (event, context, callback) { // 身份认证 const user = auth(event); if (!user) { // 若认证失败则直接返回 return callback("身份认证失败"); } // 从 user 中获取 username const { username } = user; const body = JSON.parse(JSON.parse(event.toString()).body); const { title, content } = body; createArticle(username, title, content) .then(() => callback(null, { success: true, }) ) .catch((error) => callback(error, { success: false, message: "创建文章失败", }) ); };
首先是使用 auth.js 进行身份认证,认证通过后就可以从 user 中获取 username。然后再从请求体中获取文章标题和文章内容数据,将其存入数据库。
接下来我们依旧可以将函数部署和使用 curl 进行测试:
$ curl http://a88f7e84f71749958100997b77b3e2f6-cn-beijing.alicloudapi.com/article/create \ -X POST \ -d "title=这是文章标题&content=内容内容内容......" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkphY2siLCJpYXQiOjE2MTE0OTI2ODF9.c56Xm4RBLYl5yVtR_Vk0IZOL0yijofcyE-P7vjKf4nA" {"success":true,"data":{"article_id":"d4b9bad8-a0ed-499d-b3c6-c57f16eaa193"}}
在测试时,我们需要将 token 放在 HTTP 请求头的 Authorization 属性中。文章发布成功后,你就可以在表格存储中看到对应的数据了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论