nodejs怎么使用Express框架写后端接口
本文小编为大家详细介绍“nodejs怎么使用Express框架写后端接口”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么使用Express框架写后端接口”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
在写接口前,我们要明白什么是接口,在前端我们叫接口,而后端就叫路由,这其实是指同一个东西。
路由和接口
路由(Routing)是由一个URL(或者叫路径标识)和一个特定的HTTP方法(GET、POST等)组成的,涉及到应用如何处理响应客户端请求。每一个路由都可以有一个或多个处理器函数,当匹配到路由时,这些个函数将被执行。
// 引入expressconst express = require('express')//创建express实例存入变量app ,调用expressconst app = express()// 定义路由//METHOD:是一个http请求方法;PATH:请求路径;HANDLER:是当路由匹配到时需要执行的处理函数app.METHOD(PATH, HANDLER)
接口传参
我们使用ajax请求向服务器接口传参,按http协议的规定,每个都有三个部分:
请求行:保存了请求方式,地址,可以以查询字符串的格式附加一部分数据。
请求头:它可以附加很多信息,其中content-type用来约定请求体中保存的数据格式。
     content-type常见有三种取值:
请求体:本次请求携带的参数。至于这些参数到了后端应该如何解析出来,由请求头中的
content-type
来决定。
GET接口
express
框架会自动帮我们收集get类型的接口从url地址中传递的查询字符串参数,并自动保存在req对象的query属性中,我们直接获取即可。
app.get('/get',(req,res) => { // 输出请求参数 console.log(req.query) //结束本次响应并返回内容 res.send('hello world!')})
POST接口-普通键值对
具体来说当请求头的content-type
为x-www-form-urlencoded时,表示上传的普通简单键值对 。
// 使用中间件获取普通键值对参数app.use(express.urlencoded())app.post('/add',(req,res) => { // 输出请求参数 //app.use(....)之后,在res中就会多出一个属性res.body,里面存放着键值对参数 console.log(req.body) //结束本次响应并返回内容 res.send("hello world!")})
POST接口-JSON
在post传递参数时,如果要传入的参数比较复杂(多级嵌套),例如表单数据,则可以使用json格式上传。
// 使用中间件获取JSON参数app.use(express.json())app.post('/post-json',(req,res) => { // 输出请求参数 console.log(req.body) //结束本次响应并返回内容 res.send("hello world!")})
POST接口-form-data文件上传
如果post涉及文件上传操作,则需要在服务器端额外使用第三方multer
这个包(不属于express)来获取上传的信息。
// 引入包const multer = require('multer')// 配置 上传的文件会保存到unloads这个文件夹下const upload = multer({dest:'unloads/'})//upload.single表示单文件上传,cover表示本次上传的数据app.post('/post-file',upload.single('cover'),(req,res) => { // req.file记录了上传文件的信息 console.log(req.file) //结束本次响应并返回内容 res.send({message:"ok"})})
如果当前目录下没有uploads,它会自动创建uploads这个文件夹
upload.single
只是处理了文件的上传。你仍可以通过req.body来获取其它参数
读到这里,这篇“nodejs怎么使用Express框架写后端接口”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341