中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

javaweb做視頻網(wǎng)站難嗎廣西南寧做網(wǎng)站的公司

javaweb做視頻網(wǎng)站難嗎,廣西南寧做網(wǎng)站的公司,做網(wǎng)絡(luò)推廣的網(wǎng)站有哪些,安徽福凱建設(shè)集團(tuán)網(wǎng)站1.需求 現(xiàn)在一些數(shù)據(jù)源 ,需要從三方地址拿到一些數(shù)據(jù) 比如說電影列表 信息了 影院列表信息了 等一些展示的數(shù)據(jù),但是人家這種東西 害需要使用 appkey appserect 這種驗(yàn)簽 這種需求 你前端調(diào)用接口是直接調(diào)用不了的 因?yàn)樾枰玫津?yàn)簽 需要后端接口轉(zhuǎn)接一…

1.需求

現(xiàn)在一些數(shù)據(jù)源 ,需要從三方地址拿到一些數(shù)據(jù) 比如說電影列表 信息了 影院列表信息了 等一些展示的數(shù)據(jù),但是人家這種東西 害需要使用 appkey appserect 這種驗(yàn)簽

這種需求 你前端調(diào)用接口是直接調(diào)用不了的 因?yàn)樾枰玫津?yàn)簽 需要后端接口轉(zhuǎn)接一下 前端再去調(diào)用接口

import { Body, Config, Provide } from '@midwayjs/decorator';
import { Inject } from '@midwayjs/decorator';
import { BusinessStudentEntity } from '../entity/student';
import { BusinessUserEntity } from '../entity/user';
import { BusinessBaseConfigEntity } from '../entity/base/config';
import { InjectEntityModel } from '@midwayjs/typeorm';
import { Repository } from 'typeorm';import { BaseService } from '@cool-midway/core';
import * as request from 'request';
import * as _ from 'lodash';
import * as crypto from 'crypto';
import { Context } from '@midwayjs/koa';/*** http請求封裝*/
@Provide()
export class BussinessRequestService extends BaseService {@Inject()ctx: Context;@InjectEntityModel(BusinessStudentEntity)businessStudentEntity: Repository<BusinessStudentEntity>;@InjectEntityModel(BusinessBaseConfigEntity)businessBaseConfigEntity: Repository<BusinessBaseConfigEntity>;@InjectEntityModel(BusinessUserEntity)businessUserEntity: Repository<BusinessUserEntity>;@Config('module.business')coolConfig;/*** post*/async post(url, data = {}) {const { userId } = this.ctx.clientInfo;//學(xué)員信息const studentInfo = await this.businessStudentEntity.findOneBy({id: userId,});//對應(yīng) 導(dǎo)員信息const adminInfo = await this.businessBaseConfigEntity.findOneBy({userId: String(studentInfo?.userId),});const requestConfig = this.coolConfig.request;let time = new Date().getTime();let pararm = {};pararm['appId'] = adminInfo.liangPiaoAppId;pararm['timestamp'] = time;let sign = this.generateSignature(pararm,data,adminInfo.liangPiaoSecret,adminInfo.liangPiaoAppId);return new Promise((resolve, reject) => {var option = {url:requestConfig.base_url +url +`?appId=${adminInfo.liangPiaoAppId}&sign=${sign}&timestamp=${time}`,method: 'POST',json: true,timeout: 30000,headers: {'content-type': 'application/json',},body: data,};request(option, function (error, response, body) {if (!error && response.statusCode == 200) {const { state, data } = body;if (state === 200) {resolve(data);} else {reject(body);}} else {reject(error); // 返回錯(cuò)誤信息}});});}/*** get*/// get(url, params = {}) {//   const requestConfig = this.mangoConfig.request;//   params['appId'] = requestConfig.appKey;//   params['timestamp'] = new Date().getTime();//   params['sign'] = this.generateSignature(//     params,//     requestConfig.appSecret,//     requestConfig.appKey,//     params['timestamp']//   );//   return new Promise((resolve, reject) => {//     var option = {//       url: requestConfig.base_url + url,//       method: 'GET',//       timeout: 30000,//       qs: params,//     };//     request(option, function (error, response, body) {//       if (!error && response.statusCode == 200) {//         const { code, data } = body;//         if (code === 1) {//           resolve(data);//         } else {//           reject(body);//         }//       } else {//         reject(error); // 返回錯(cuò)誤信息//       }//     });//   });// }//計(jì)算簽名generateSignature(params, body, secretKey, keys) {const joinedParams = this.joinRequestParams(params, body, secretKey, keys);const md5Hash = crypto.createHash('md5').update(joinedParams).digest('hex').toUpperCase();return md5Hash;}//計(jì)算簽名joinRequestParams(params, body, secretKey, keys) {const sb = [secretKey]; // 前面加上 secretKeyconst sortedParams = Object.keys(params).filter(key => key !== 'sign' && params[key]) // 過濾掉不需要的鍵.sort(); // 對鍵進(jìn)行排序for (const key of sortedParams) {sb.push(key + params[key]);}sb.push(JSON.stringify(body));sb.push(secretKey); // 最后加上 secretKeyreturn sb.join('');}
}

當(dāng)然一般 這種三方API 都有人家規(guī)定的驗(yàn)簽規(guī)則 讓你 寫什么樣的格式 拼接成什么樣的格式

得看實(shí)際的需求 我這里主要介紹的是 post 請求的封裝 (在jsNode 中書寫后端接口)? 是需要引入request 插件

http://www.risenshineclean.com/news/7236.html

相關(guān)文章:

  • 汽車網(wǎng)站建設(shè)目的全能優(yōu)化大師
  • 2345網(wǎng)址導(dǎo)航主頁長沙關(guān)鍵詞優(yōu)化新行情報(bào)價(jià)
  • 備案的域名拿來做別的網(wǎng)站廣東seo網(wǎng)絡(luò)培訓(xùn)
  • 自己網(wǎng)站做問卷調(diào)查網(wǎng)站外鏈有多重要
  • 網(wǎng)站的備案許可號(hào)不存在東莞網(wǎng)絡(luò)推廣平臺(tái)
  • 柳市做網(wǎng)站接推廣怎么收費(fèi)
  • 商務(wù)型網(wǎng)站seo專員招聘
  • 商城的網(wǎng)站建設(shè)公關(guān)服務(wù)
  • 購物網(wǎng)站模塊例子洗發(fā)水營銷推廣軟文800字
  • 遵義網(wǎng)站設(shè)計(jì)aso關(guān)鍵詞搜索優(yōu)化
  • 網(wǎng)站建設(shè)需求有哪些武漢剛剛發(fā)生的新聞
  • 網(wǎng)站建設(shè)相關(guān)資訊怎樣搭建一個(gè)網(wǎng)站
  • 網(wǎng)站開發(fā)語言哪一種好些網(wǎng)絡(luò)運(yùn)營好學(xué)嗎
  • 網(wǎng)站上的充值鏈接怎么做的整站seo怎么做
  • 重慶新聞?lì)l道晉城seo
  • 中國官方網(wǎng)站認(rèn)證中心100個(gè)成功營銷案例
  • 鎮(zhèn)江網(wǎng)百度seo搜索
  • html5建設(shè)攝影網(wǎng)站意義銷售管理怎么帶團(tuán)隊(duì)
  • 重慶做的好的房產(chǎn)網(wǎng)站交換鏈接
  • 個(gè)人主頁怎么設(shè)置企業(yè)網(wǎng)站seo優(yōu)化公司
  • 找網(wǎng)站建設(shè)客戶怎樣進(jìn)行關(guān)鍵詞推廣
  • 仿新聞網(wǎng)站百度賬號(hào)客服人工電話
  • 日本做仿牌網(wǎng)站在百度怎么創(chuàng)建自己的網(wǎng)站
  • 中國鐵路監(jiān)理建設(shè)協(xié)會(huì)網(wǎng)站搭建一個(gè)網(wǎng)站需要什么
  • 網(wǎng)頁設(shè)計(jì)流程圖繪制seo網(wǎng)站診斷方案
  • 佛山網(wǎng)站優(yōu)化有哪些熱門關(guān)鍵詞查詢
  • 網(wǎng)站建設(shè)工作室的營銷方式創(chuàng)業(yè)計(jì)劃書長沙靠譜的關(guān)鍵詞優(yōu)化
  • 網(wǎng)站建設(shè)優(yōu)化排名百度推廣登錄后臺(tái)
  • 幫傳銷組織做網(wǎng)站營業(yè)推廣怎么寫
  • 青島做網(wǎng)站多少錢東莞網(wǎng)站制作模板