最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js使用express寫接口的具體代碼

 更新時(shí)間:2023年03月15日 17:04:12   作者:idiot_MAN  
這篇文章主要介紹了Node.js使用express寫接口,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

創(chuàng)建基本的服務(wù)器

//導(dǎo)入express模塊
const express =require('rexpress')
//創(chuàng)建express的服務(wù)器實(shí)例
const app=express()

....

//調(diào)用app.listen方法 ,指定端口號(hào)并啟動(dòng)web服務(wù)器
app.listen(80,function(){
  console.log('server running at http://127.0.0.1');
})

創(chuàng)建API路由模塊

// apiRouter.js
var express=require('express')  //導(dǎo)入express
var apiRouter=express.Router() //創(chuàng)建路由對(duì)象
module.exports=router //向外導(dǎo)出對(duì)象
//app.js
const apiRouter=require('./apiRouter')
app.use('api',apiRouter)

編寫GET接口

apiRouter.get('/get',(req,res)=>{
//1.獲取到客戶端通過(guò)查詢字符串,發(fā)送到服務(wù)器的數(shù)據(jù)
const query=req.query
//2.調(diào)用res.send()方法 ,把數(shù)據(jù)響應(yīng)給客戶端
? ? res.send({
? ? ? ? status:0,?? ??? ? ? ? ? //狀態(tài),0表示成功 ?1表示失敗
? ? ? ? msg:'GET請(qǐng)求成功,?? ??? ?// 狀態(tài)描述
? ? ? ? data:query?? ??? ? ? ? ? //需要響應(yīng)給客戶端的數(shù)據(jù)
? ? })
})

編寫POST接口

apiRouter.post('/post',(req,res)=>{
//1.獲取到客戶端通過(guò)查詢字符串,發(fā)送到服務(wù)器的數(shù)據(jù)
const body=req.body
//2.調(diào)用res.send()方法 ,把數(shù)據(jù)響應(yīng)給客戶端
? ? res.send({
? ? ? ? status:0,?? ??? ? ? ? ? //狀態(tài),0表示成功 ?1表示失敗
? ? ? ? msg:'POST請(qǐng)求成功,?? ??? ?// 狀態(tài)描述
? ? ? ? data:body?? ??? ? ? ? ? //需要響應(yīng)給客戶端的數(shù)據(jù)
? ? })
})

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

//配置解析表單數(shù)據(jù)的中間件
app.use(express.urlencoded({extended:false}))

CROS跨域資源共享

1.接口的跨域問(wèn)題

剛才編寫的GET和POST接口,存在一個(gè)很嚴(yán)重的問(wèn)題:不支持跨域請(qǐng)求。解決接口跨域問(wèn)題的方案主要有兩種

  • CORS(主流的解決方案,推薦使用)CORS(主流的解決方案,推薦使用)
  • JSONP(有缺陷的解決方案:只支持GET請(qǐng)求)有缺陷的解決方案:只支持GET請(qǐng)求

2.使用cros中間件拒絕跨域問(wèn)題

cros是Express的一個(gè)第三方的中間件。通過(guò)安裝和配置cors中間件,可以很方便的解決跨域問(wèn)題

使用步驟

  • 運(yùn)行npm install cros 安裝中間件
  • 使用const cros=require(‘cros’)導(dǎo)入中間件
  • 在路由之前調(diào)用app.use(cros())配置中間件

3.什么是cros

cros(Cross-Origin Resource Sharing,跨域資源共享)由一系列HTTP響應(yīng)頭組成,這些HTTP響應(yīng)頭決定瀏覽器是否阻止前端JS代碼跨域獲取資源

瀏覽器的同源安全策略默認(rèn)會(huì)阻止網(wǎng)頁(yè)"跨域"或缺資源,但是如果接口服務(wù)器配置了CROS相關(guān)的HTTP響應(yīng)頭

就可以接觸瀏覽器端的跨域訪問(wèn)限制

4.cros的注意事項(xiàng)

  • cros主要在服務(wù)器端進(jìn)行配置。客戶端瀏覽器無(wú)需做任何額外的配置,即可請(qǐng)求開(kāi)啟了cros的接口
  • cros在瀏覽器在有兼容性。

5.cros請(qǐng)求的分類

客戶端在請(qǐng)求cors接口時(shí),根據(jù) 請(qǐng)求方式和請(qǐng)求頭的不同,跨域?qū)ros的請(qǐng)求分為兩大類,分別是:

  • 簡(jiǎn)單請(qǐng)求
    • 請(qǐng)求方式:GET,POST,HEAT 三者之一
    • HTTP頭部信息不超過(guò)一下幾種字段:無(wú)自定義頭部,Accept,Accept-Language,Content-Language,DPR,Dpwnlink,Sava-Data,Viewport-Width,Width,Content-Type
  • 預(yù)檢請(qǐng)求
    • 請(qǐng)求方式為GET,POST,HEAD之外的請(qǐng)求Method類型
    • 請(qǐng)求頭在包含自定義頭部字段
    • 向服務(wù)器發(fā)送了application/json格式的數(shù)據(jù)

在瀏覽器與服務(wù)器正式通信之前,瀏覽器會(huì)發(fā)送OPTION請(qǐng)求進(jìn)行預(yù)檢,以獲取瀏覽器是否允許該實(shí)際請(qǐng)求,所以這一次的OPTION請(qǐng)求為“預(yù)檢請(qǐng)求”,服務(wù)器成功響應(yīng)預(yù)檢請(qǐng)求后,才會(huì)發(fā)送真正的請(qǐng)求,并且攜帶真實(shí)數(shù)據(jù)

6.簡(jiǎn)單請(qǐng)求和預(yù)檢請(qǐng)求的區(qū)別

簡(jiǎn)單請(qǐng)求的特點(diǎn): 客戶端與服務(wù)器之間只會(huì)發(fā)生一次請(qǐng)求。
預(yù)檢請(qǐng)求的特點(diǎn): 客戶端與服務(wù)器之間會(huì)發(fā)生兩次請(qǐng)求,OPTION預(yù)檢請(qǐng)求成功之后,才會(huì)發(fā)起真正的請(qǐng)求。

JSONP接口

1.回顧jsonp的概念和特點(diǎn)

概念 :瀏覽器通過(guò)/

特點(diǎn):

  • JSONP不屬于真正的ajax請(qǐng)求,因?yàn)樗鼪](méi)有使用XMLHttpRequest這個(gè)對(duì)象
  • JSONP僅支持GET請(qǐng)求,不支持POST,PUT,DELETE等請(qǐng)求

2.創(chuàng)建jsonp接口的注意事項(xiàng)

如果項(xiàng)目中已經(jīng)配置了CROS的跨域資源共享,為了防止沖突,必須在配置CROS中間件之前聲明JSONP的接口,否則JSONP接口會(huì)被處理成開(kāi)啟了CROS的接口

3.實(shí)現(xiàn)JSONP接口的步驟

  • 獲取客戶端的發(fā)送過(guò)來(lái)的回調(diào)函數(shù)的名字
  • 得到要通過(guò)JSONP形式發(fā)送給客戶端的數(shù)據(jù) JSON.stringify()
  • 根據(jù)前面兩走的到的數(shù)據(jù),拼接出一個(gè)函數(shù)調(diào)用的字符串
  • 把上一步拼接得到的字符串,響應(yīng)給客戶端的/

4.實(shí)現(xiàn)JSONP接口的具體代碼

app.get('/api/jsonp',(req,res)=>{
? //獲取客戶端發(fā)送過(guò)來(lái)的回調(diào)函數(shù)的名字
? const ?funcName=req.query.callback
? //得到要通過(guò)JSONP形式發(fā)送給客戶端的數(shù)據(jù)
? const data={name:'zs',age:22}
? //根據(jù)前面兩步得到的數(shù)據(jù),拼接一個(gè)函數(shù)調(diào)用的字符串
? const scriptStr=`${funcName}(${JSON.stringify(data)})`
? //把上一步得到的拼接字符串,響應(yīng)給客戶端的<script>標(biāo)簽進(jìn)行解析
? res.send(scriptStr)
})

5.在網(wǎng)頁(yè)在使用jq發(fā)起jsonp請(qǐng)求

調(diào)用$.ajax(),提供JSONP的配置請(qǐng)求,從而發(fā)起JSONP請(qǐng)求

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

到此這篇關(guān)于Node.js使用express寫接口的文章就介紹到這了,更多相關(guān)Node.js使用express寫接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • node+express實(shí)現(xiàn)分頁(yè)效果

    node+express實(shí)現(xiàn)分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了node+express實(shí)現(xiàn)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Node.js中 __dirname 的使用介紹

    Node.js中 __dirname 的使用介紹

    這篇文章主要給大家介紹了關(guān)于Node.js中 __dirname使用的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-06-06
  • 詳解通過(guò)源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn)

    詳解通過(guò)源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn)

    這篇文章主要介紹了詳解通過(guò)源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Node.js中環(huán)境變量process.env的一些事詳解

    Node.js中環(huán)境變量process.env的一些事詳解

    這篇文章主要給大家介紹了關(guān)于Node.js中環(huán)境變量process.env的一些事,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 如何從頭實(shí)現(xiàn)一個(gè)node.js的koa框架

    如何從頭實(shí)現(xiàn)一個(gè)node.js的koa框架

    這篇文章主要介紹了如何從頭實(shí)現(xiàn)一個(gè)node.js的koa框架,koa.js是最流行的node.js后端框架之一,有很多網(wǎng)站都使用koa進(jìn)行開(kāi)發(fā),同時(shí)社區(qū)也涌現(xiàn)出了一大批基于koa封裝的企業(yè)級(jí)框架。,需要的朋友可以參考下
    2019-06-06
  • 對(duì)node.js中render和send的用法詳解

    對(duì)node.js中render和send的用法詳解

    今天小編就為大家分享一篇對(duì)node.js中render和send的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Nest.js使用multer實(shí)現(xiàn)文件上傳功能

    Nest.js使用multer實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了Nest.js鵝湖使用multer實(shí)現(xiàn)文件上傳功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • 從零開(kāi)始學(xué)習(xí)Node.js系列教程六:EventEmitter發(fā)送和接收事件的方法示例

    從零開(kāi)始學(xué)習(xí)Node.js系列教程六:EventEmitter發(fā)送和接收事件的方法示例

    這篇文章主要介紹了Node.js EventEmitter發(fā)送和接收事件的方法,結(jié)合實(shí)例形式分析了EventEmitter發(fā)送和接收事件的原理、實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • 在CentOS 7服務(wù)器上安裝Node.js的方法步驟

    在CentOS 7服務(wù)器上安裝Node.js的方法步驟

    Node.js 是一個(gè)用于服務(wù)器端編程的 JavaScript 平臺(tái),允許用戶快速構(gòu)建網(wǎng)絡(luò)應(yīng)用程序,通過(guò)在前端和后端都使用 JavaScript,開(kāi)發(fā)可以更加一致并且可以在同一個(gè)系統(tǒng)中設(shè)計(jì),在本指南中,我們將向您展示如何在 Ubuntu 14.04 服務(wù)器上開(kāi)始使用 Node.js
    2024-09-09
  • NodeJS之優(yōu)缺點(diǎn)及適用場(chǎng)景討論

    NodeJS之優(yōu)缺點(diǎn)及適用場(chǎng)景討論

    這篇文章主要介紹了NodeJS之優(yōu)缺點(diǎn)及適用場(chǎng)景討論,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評(píng)論

鄱阳县| 柘城县| 内乡县| 那坡县| 玛纳斯县| 沙洋县| 得荣县| 平远县| 城步| 大关县| 息烽县| 克什克腾旗| 屏边| 武山县| 呼玛县| 余庆县| 疏勒县| 嘉定区| 麻城市| 琼结县| 肃宁县| 萨迦县| 阳泉市| 本溪| 长沙市| 新邵县| 高平市| 青河县| 廊坊市| 武汉市| 桐柏县| 普洱| 大邑县| 大洼县| 建水县| 崇阳县| 四川省| 凌源市| 怀仁县| 嵩明县| 习水县|