日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)小程序云教程:云開發(fā)HTTP處理

在小程序端我們可以使用wx.request來與第三方api服務(wù)進(jìn)行數(shù)據(jù)交互,那云函數(shù)除了可以直接給小程序端提供數(shù)據(jù)以外,能不能從第三方服務(wù)器獲取數(shù)據(jù)呢?答案是肯定的,而且在云函數(shù)中使用HTTP請求訪問第三方服務(wù)可以不受域名限制,即不需要像小程序端一樣,要將域名添加到request合法域名里;也不受http和https的限制,沒有域名只有IP都是可以的,所以云函數(shù)可以應(yīng)用的場景非常多,即能方便的調(diào)用第三方服務(wù),也能夠充當(dāng)一個功能復(fù)雜的完整應(yīng)用的后端。不過需要注意的是,云函數(shù)是部署在云端,有些局域網(wǎng)等終端通信的業(yè)務(wù)只能在小程序里進(jìn)行。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)祁門,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

node流行的HTTP庫比較多,比如got、superagent、request、axios、request-promise、fech等等,推薦大家使用axios,axios是一個基于promise的HTTP庫,可以使用在瀏覽器和Nodejs環(huán)境中,下面也會以axios為例。

一、get請求

使用開發(fā)者工具,創(chuàng)建一個云函數(shù),如axios,然后在package.json增加axios最新版latest的依賴并用npm install安裝:

"dependencies": {
  "wx-server-sdk":"latest",
  "axios": "latest"
}

然后在index.js里輸入以下代碼,在前面章節(jié)里,我們在小程序端調(diào)用過知乎日報的API,下面還以知乎日報的API為例:

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})


const axios = require('axios')
exports.main = async (event, context) => {
  const url = "https://news-at.zhihu.com/api/4/news/latest"
  try {
    const res = await axios.get(url)
    //const util = require('util')
    //console.log(util.inspect(res,{depth:null}))
    return res.data; 
  } catch (e) {
    console.error(e);
  }
}

在小程序端調(diào)用這個云函數(shù),就能返回從知乎日報里獲取到的最新文章和熱門文章,云函數(shù)端獲取知乎日報的數(shù)據(jù)就不需要添加域名校驗(yàn),比小程序端的wx.request方便省事很多。

注意,在上面的案例中,我們返回的不是整個res(response對象),而是response對象里的data。直接返回整個res對象,會報Converting circular structure to JSON的錯誤,如果你想返回整個res,可以取消上面代碼里面的注釋。Node的util.inspect(object,[showHidden],[depth],[colors])是一個將任意對象轉(zhuǎn)換為字符串的方法,通常用于調(diào)試和錯誤輸出。

上面的知乎鏈接本來就是API,返回的是json格式的數(shù)據(jù),所以可以直接使用axios.get(),axios還可以用于爬蟲,爬取網(wǎng)頁,比如下面的代碼就是爬取百度首頁,并返回首頁里的里的內(nèi)容(也就是網(wǎng)頁的標(biāo)題):

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
const axios = require('axios')
exports.main = async (event, context) => {
  try {
    const res = await axios.get("https://baidu.com")
    const htmlString = res.data
    return htmlString.match(/]*>([^<]+)<\/title>/)[1]  
  } catch (e) {
    console.error(e);
  }
}

如果想使用云函數(shù)做爬蟲后臺,抓取網(wǎng)頁數(shù)據(jù),可以使用cheerio和puppeteer等第三方開源依賴,這里就不多做介紹了。

二、post請求

結(jié)合前面在網(wǎng)絡(luò)API里講過的聚合數(shù)據(jù)歷史上的今天API,我們也可以在云函數(shù)端發(fā)起post請求:

const now = new Date(); //在云函數(shù)字符串時間時,注意要修改云函數(shù)的時區(qū),方法在云函數(shù)實(shí)用工具庫里有詳細(xì)介紹
const month = now.getMonth()+1 //月份需要+1
const day = now.getDate()
const key = "" //你的聚合KEY
const url ="http://api.juheapi.com/japi/toh"


const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
const axios = require('axios')
exports.main = async (event, context) => {
  try {
    const res = await axios.post(url,{
      key:key,
      v:1.0,
      month:month,
      day:day
    })
// const res = await axios.post(`url?key=${key}&v=1.0&month=${month}&day=${day}`)
    return res
  } catch (e) {
    console.error(e);
  }
}

三、使用axios下載文件

要使用axios下載文件,需要將axios的responseType由默認(rèn)的json修改為stream,然后將下載好的文件上傳到云存儲里,也可以將下載好的文件寫入到云函數(shù)臨時的tmp文件夾里,用于更加復(fù)雜的操作。

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
const axios = require('axios')
//const fs = require('fs');
exports.main = async (event, context) => {
  try {
    const  url = 'https://tcb-1251009918.cos.ap-guangzhou.myqcloud.com/weapp.jpg';
    const res = await axios.get(url,{
      responseType: 'stream'
    })
    const buffer = res.data
    //我們也還可以將下載好的圖片保存在云函數(shù)的臨時文件夾里
    // const fileStream = await fs.createReadStream('/tmp/axiosimg.jpg')
    return await cloud.uploadFile({
      cloudPath: 'axiosimg.jpg',
      fileContent: buffer, 
    })
  } catch (e) {
    console.error(e);
  }
}

名稱欄目:創(chuàng)新互聯(lián)小程序云教程:云開發(fā)HTTP處理
標(biāo)題鏈接:http://www.5511xx.com/article/djpehsh.html