IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 前端培训丁鹿学堂:node使用http模块进行请求转发 -> 正文阅读

[网络协议]前端培训丁鹿学堂:node使用http模块进行请求转发

服务器之间请求是没有跨域限制的,我们可以利用node作为中间层,去请求别的服务器的接口,获取数据响应给自己定义的接口,实现转发。
目的:1 解决跨域问题,2 如果多个接口在不同的服务器上处理跨域比较麻烦,node作为中间层容易维护。
核心代码:利用http模块的get方法去请求数据
前端请求:

 fetch('http://localhost:3000/api/getValue').then(response => {
                return  response.json()
            }).then(res=>{
                console.log(res)
            })

node代理转发豆瓣的请求给前端,如果请求是https的,要引入https的模块

let https = require('https')

封装豆瓣请求

function httpGet(callback){
    https.get('https://m.douban.com/j/puppy/frodo_landing?include=anony_home',(res)=>{
        let data = ''
        res.on('data',(chunk)=>{
            data += chunk
        })
        res.on('end',()=>{
            callback(data)
        })
    })
}
  http.createServer((req,res)=>{
    let data = url.parse(req.url,true)
    res.writeHead(200,{
        "Content-Type":"application/json;charset=utf-8",
        "access-control-allow-origin":'*' // 设置cors头去解决跨域问题
    })
    if(data.pathname === '/api/getValue'){
        httpGet((data)=>{
            console.log(data)
            res.end(data)
        })
    }else{
        res.end("404")
    }
}).listen(3000,()=>{
    console.log('server run ...')
})
node之http的post请求

http还有post请求,语法上和http的get请求是不一样的。

  1. http的post请求的api为request,
  2. 第一个参数是配置对象,

hostname是主机名,不要带http或者https
port因为是post,默认是443
path为请求的路径地址

 let options = {
        hostname:'m.xiaomiyoupin.com',
        port:'443',
        path:'/mtop/market/search/placeHolder',
        method:'POST',
        headers:{
            "content-type":'application/json'
        }
    }
  1. 返回值是一个对象,通过这个request的返回值req进行请求
  2. 返回值req还要进行write去携带请求参数,通过end去结束
    let req = https.request(options,(res)=>{
        let data = ''
        res.on('data',(chunk)=>{
            data += chunk
        })
        res.on('end',()=>{
            callback(data)
        })
    })
    req.write(JSON.stringify([{},{"baseParam":{"ypClient":1}}]))
    req.end()
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:37:39  更:2022-08-19 19:38:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:39:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码