返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Node.js使用express写接口的具体代码
  • 681
分享到

Node.js使用express写接口的具体代码

Node.js使用express写接口Node.js使用express 2023-03-15 17:03:23 681人浏览 安东尼
摘要

目录创建基本的服务器创建api路由模块编写GET接口编写POST接口CROS跨域资源共享1.接口的跨域问题2.使用cros中间件拒绝跨域问题3.什么是cros4.cros的注意事项5

创建基本的服务器

//导入express模块
const express =require('rexpress')
//创建express的服务器实例
const app=express()

....

//调用app.listen方法 ,指定端口号并启动WEB服务器
app.listen(80,function(){
  console.log('server running at Http://127.0.0.1');
})

创建API路由模块

// apiRouter.js
var express=require('express')  //导入express
var apiRouter=express.Router() //创建路由对象
module.exports=router //向外导出对象
//app.js
const apiRouter=require('./apiRouter')
app.use('api',apiRouter)

编写GET接口

apiRouter.get('/get',(req,res)=>{
//1.获取到客户端通过查询字符串,发送到服务器的数据
const query=req.query
//2.调用res.send()方法 ,把数据响应给客户端
    res.send({
        status:0,               //状态,0表示成功  1表示失败
        msg:'GET请求成功,        // 状态描述
        data:query               //需要响应给客户端的数据
    })
})

编写POST接口

apiRouter.post('/post',(req,res)=>{
//1.获取到客户端通过查询字符串,发送到服务器的数据
const body=req.body
//2.调用res.send()方法 ,把数据响应给客户端
    res.send({
        status:0,               //状态,0表示成功  1表示失败
        msg:'POST请求成功,        // 状态描述
        data:body               //需要响应给客户端的数据
    })
})

在拿到路由之前需要配置解析表单的中间件

//配置解析表单数据的中间件
app.use(express.urlencoded({extended:false}))

CROS跨域资源共享

1.接口的跨域问题

刚才编写的GET和POST接口,存在一个很严重的问题:不支持跨域请求。解决接口跨域问题的方案主要有两种

  • CORS(主流的解决方案,推荐使用)CORS(主流的解决方案,推荐使用)
  • JSONP(有缺陷的解决方案:只支持GET请求)有缺陷的解决方案:只支持GET请求

2.使用cros中间件拒绝跨域问题

cros是Express的一个第三方的中间件。通过安装和配置cors中间件,可以很方便的解决跨域问题

使用步骤

  • 运行npm install cros 安装中间件
  • 使用const cros=require(‘cros’)导入中间件
  • 在路由之前调用app.use(cros())配置中间件

3.什么是cros

cros(Cross-Origin Resource Sharing,跨域资源共享)由一系列HTTP响应头组成,这些HTTP响应头决定浏览器是否阻止前端JS代码跨域获取资源

浏览器的同源安全策略默认会阻止网页"跨域"或缺资源,但是如果接口服务器配置了CROS相关的HTTP响应头

就可以接触浏览器端的跨域访问限制

4.cros的注意事项

  • cros主要在服务器端进行配置。客户端浏览器无需做任何额外的配置,即可请求开启了cros的接口
  • cros在浏览器在有兼容性。

5.cros请求的分类

客户端在请求cors接口时,根据 请求方式和请求头的不同,跨域将cros的请求分为两大类,分别是:

  • 简单请求
    • 请求方式:GET,POST,HEAT 三者之一
    • HTTP头部信息不超过一下几种字段:无自定义头部,Accept,Accept-Language,Content-Language,DPR,Dpwnlink,Sava-Data,Viewport-Width,Width,Content-Type
  • 预检请求
    • 请求方式为GET,POST,HEAD之外的请求Method类型
    • 请求头在包含自定义头部字段
    • 向服务器发送了application/json格式的数据

在浏览器与服务器正式通信之前,浏览器会发送OPTION请求进行预检,以获取浏览器是否允许该实际请求,所以这一次的OPTION请求为“预检请求”,服务器成功响应预检请求后,才会发送真正的请求,并且携带真实数据

6.简单请求和预检请求的区别

简单请求的特点: 客户端与服务器之间只会发生一次请求。
预检请求的特点: 客户端与服务器之间会发生两次请求,OPTION预检请求成功之后,才会发起真正的请求。

JSONP接口

1.回顾jsonp的概念和特点

概念 :浏览器通过/

特点:

  • JSONP不属于真正的ajax请求,因为它没有使用XMLHttpRequest这个对象
  • JSONP仅支持GET请求,不支持POST,PUT,DELETE等请求

2.创建jsonp接口的注意事项

如果项目中已经配置了CROS的跨域资源共享,为了防止冲突,必须在配置CROS中间件之前声明JSONP的接口,否则JSONP接口会被处理成开启了CROS的接口

3.实现JSONP接口的步骤

  • 获取客户端的发送过来的回调函数的名字
  • 得到要通过JSONP形式发送给客户端的数据 JSON.stringify()
  • 根据前面两走的到的数据,拼接出一个函数调用的字符串
  • 把上一步拼接得到的字符串,响应给客户端的/

4.实现JSONP接口的具体代码

app.get('/api/jsonp',(req,res)=>{
  //获取客户端发送过来的回调函数的名字
  const  funcName=req.query.callback
  //得到要通过JSONP形式发送给客户端的数据
  const data={name:'zs',age:22}
  //根据前面两步得到的数据,拼接一个函数调用的字符串
  const scriptStr=`${funcName}(${JSON.stringify(data)})`
  //把上一步得到的拼接字符串,响应给客户端的<script>标签进行解析
  res.send(scriptStr)
})

5.在网页在使用jq发起jsonp请求

调用$.ajax(),提供JSONP的配置请求,从而发起JSONP请求

$("#btnJSONP").on("click", function () {
    $.ajax({
        type: "GET",
        url: "http://127.0.0.1/api/jsonp",
        dataType: "jsonp",
        success: function (res) {
        console.log(res);
        },
    });
});

到此这篇关于node.js使用express写接口的文章就介绍到这了,更多相关node.js使用express写接口内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Node.js使用express写接口的具体代码

本文链接: https://lsjlt.com/news/199970.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Node.js使用express写接口的具体代码
    目录创建基本的服务器创建API路由模块编写GET接口编写POST接口CROS跨域资源共享1.接口的跨域问题2.使用cros中间件拒绝跨域问题3.什么是cros4.cros的注意事项5...
    99+
    2023-03-15
    Node.js使用express写接口 Node.js使用express
  • Node.js怎么使用express写接口
    这篇文章主要讲解了“Node.js怎么使用express写接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js怎么使用express写接口”吧!创建基本的服务器//导入expre...
    99+
    2023-07-05
  • python 定时器具体的使用代码怎么写
    这篇文章给大家介绍python 定时器具体的使用代码怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python 定时器在运行的时候有不少的问题需要我们注意,下面我们就来看看在运行效果上的问题如何解决。 代码如下:...
    99+
    2023-06-17
  • TypeScript 接口继承的具体使用
    目录1、TypeScript 接口继承2、单继承3、多继承4、接口继承中的同名成员的兼容问题4.1、同名成员的类型必须兼容4.2、同名成员的类型必须相同5、接口继承类6、参考1、Ty...
    99+
    2024-04-02
  • nodejs怎么使用Express框架写后端接口
    本文小编为大家详细介绍“nodejs怎么使用Express框架写后端接口”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么使用Express框架写后端接口”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-30
  • 小程序wx.getUserProfile接口的具体使用
    最近微信小程序对于审核小程序提出了带有wx.login、wx.getUserInfo接口的调整,并提出了一个新的接口供开发者调用 下图是对于新的接口的官方文档详情 点击前往官网查看更...
    99+
    2024-04-02
  • nodejs使用Express框架写后端接口的全过程
    目录路由和接口接口传参GET接口POST接口-普通键值对POST接口-JSONPOST接口-form-data文件上传总结在写接口前,我们要明白什么是接口,在前端我们叫接口,而后端就...
    99+
    2024-04-02
  • GO语言中接口和接口型函数的具体使用
    目录前言GO语言中的接口怎么用?使用函数类型实现接口有何好处?GO源码例子前言 今天在编码中,看到了一个非常经典的接口用法如下,于是查阅了相关资料,发现此种写法为接口型函数,本文对此...
    99+
    2023-03-09
    GO语言接口 GO语言接口型函数
  • Go语言接口的嵌套的具体使用
    目录系统包中的接口嵌套组合在代码中使用接口嵌套组合在Go语言中,不仅结构体与结构体之间可以嵌套,接口与接口间也可以通过嵌套创造出新的接口。 一个接口可以包含一个或多个其他的接口,这相...
    99+
    2023-05-16
    Go语言接口嵌套 Go 接口嵌套组合
  • python调用api接口的代码怎么写
    你可以使用`requests`库来调用API接口,下面是一个简单的示例代码:```pythonimport requestsurl ...
    99+
    2023-08-30
    python
  • Golang开发之接口的具体使用详解
    目录Golang的接口是什么什么情况下要用接口实战案例多态的例子定义通用方法的例子松耦合的例子实现插件化架构的例子Golang的接口是什么 在 Golang 中,接口是一种类型,它是...
    99+
    2023-05-14
    Golang接口使用 Golang接口 Go 接口
  • 什么是接口?如何在PHP中使用接口编写优雅的代码?
    什么是接口?如何在PHP中使用接口?本篇文章带大家聊聊使用接口编写更优雅的 PHP 代码,希望对大家有所帮助!在编程中,确保代码可读、可维护、可扩展和易于测试是很重要的;而使用接口,恰恰是我们改进代码中所有这些因素的方法之一。目标读者本文的...
    99+
    2022-08-08
    php 接口
  • node.js 全局变量的具体使用
    全局对象 所有模块都可以调用 global:表示Node所在的全局环境,类似于浏览器中的window对象。 process:指向Node内置的process模块,允...
    99+
    2024-04-02
  • Node.js包管理器npm的具体使用
    目录目的npm init 与 package.json文件模块安装与管理安装模块查看已安装模块更新模块删除模块npx模块编译版本控制换源使用 nrm 工具换源使用 cnpm 代替 n...
    99+
    2024-04-02
  • 如何用接口写高质量PHP代码
    本篇内容介绍了“如何用接口写高质量PHP代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!      &nbs...
    99+
    2023-06-25
  • Express使用html模板的详细代码
    express默认使用jade模板,可以配置让其支持使用ejs或html模板。 1. 安装ejs 在项目根目录安装ejs. npm install ejs 2、引入ejs var ...
    99+
    2022-06-04
    模板 代码 详细
  • MySQL窗口函数的具体使用
    目录一、什么是窗口函数1、怎么理解窗口?2、什么是窗口函数二、窗口函数用法1、序号函数:row_number() / rank() / dense_rank()2、分布函数:...
    99+
    2024-04-02
  • Nginx代理Partainer的具体使用
    目录1. 启动nginx2. 启动portainer3. 创建网络主要目的用于通过nginx可以代理 Partainer服务,通过nginx进行统一转发 1. 启动nginx 启动n...
    99+
    2023-03-06
    Nginx代理Partainer Nginx Partainer代理
  • Java接口测试之日志框架Logback的具体使用
    目录一、引言二、前言三、LogBack、Slf4j和Log4j之间的关系四、默认日志Logback五、配置详解1、添加日志依赖2、配置文件六、多环境日志输出七、单元测试八、工程目录九...
    99+
    2024-04-02
  • golangmysql的连接池的具体使用
    目录1.mysql-通过sql建立连接池2.mysql-gorm 建立连接池3.连接池相较于单个client4.通用连接池参考1.mysql-通过sql建立连接池 连接池用sql.O...
    99+
    2023-02-21
    golang mysql连接池 golang 连接池
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作