const express = require("express");
const app = express();
const request = require("request");
const CryptoJS = require("crypto-js"); 
const APPID = 'ef5c4e0a'
const API_SECRET = 'ZDU5MmU5MzAyNDhkOWY5MDE3NDlmMWVi'
const API_KEY = '98f84c1f97a0399b02dceb2ea08c4a0a'


// console.log('request----==', request)
/**
 * 获取websocket url
 * 该接口需要后端提供,这里为了方便前端处理
 */
function getRequestUrl() {
  return new Promise((resolve, reject) => {
    // 请求地址根据语种不同变化
    // var url = 'wss://iat-api.xfyun.cn/v2/iat'
    var url = 'https://api.xf-yun.com/v1/private/s9a87e3ec'
    // var host = 'iat-api.xfyun.cn'
    var host = 'api.xf-yun.com'
    var apiKey = API_KEY
    var apiSecret = API_SECRET
    var date = new Date().toGMTString()
    var algorithm = 'hmac-sha256'
    var headers = 'host date request-line'
    var signatureOrigin = `host: ${host}\ndate: ${date}\nPOST /v1/private/s9a87e3ec HTTP/1.1`
    var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, apiSecret)
    var signature = CryptoJS.enc.Base64.stringify(signatureSha)
    var authorizationOrigin = `api_key="${apiKey}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`
    var authorization = Buffer.from(authorizationOrigin).toString('base64')
    url = `${url}?authorization=${authorization}&date=${date}&host=${host}`
    resolve(url)
  })
}

getRequestUrl().then(url => {
  request({
    url: url,
    method: "POST",
    json: true,
    headers: {
        "content-type": "application/json",
    },
    body: {
      "header": {
        "app_id": APPID,
        "status": 3
      },
      "parameter": {
        "s9a87e3ec": {
          "result": {
            "encoding": "utf8",
            "compress": "raw",
            "format": "json"
          }
        }
      },
      "payload": {
        "input": {
          "encoding": "utf8",
          "compress": "raw",
          "format": "json",
          "status": 3,
          "text": "PHN0cm9uZz48ZW0+5YWs6bm/5LiK5pyJ5LiA6L6G6auY6YCf6KGM6am255qE5rCU6L2mPC9lbT48L3N0cm9uZz4="
        }
      }
    },
  }, function(error, response, body) {
    console.log(11111,response.statusCode)
    console.log(222,body) // 请求成功的处理逻辑
    if (!error && response.statusCode == 200) {
        console.log(body) // 请求成功的处理逻辑
    }
  });
})

app.listen(80,function () {
    console.log("success");
})

处理跨域问题

const app = require("express")();
const request = require("request");
const cors = require('cors');
const CryptoJS = require("crypto-js");
const { createProxyMiddleware } = require('http-proxy-middleware');

const PORT = 8088;
const CONF = {
  APPID: 'ef5c4e0a',
  API_KEY: '98f84c1f97a0399b02dceb2ea08c4a0a',
  API_SECRET: 'ZDU5MmU5MzAyNDhkOWY5MDE3NDlmMWVi',
  HOST: 'api.xf-yun.com',
  PROXY_TO: 'https://alphalawyer.cn'
};

const encode = (text) => Buffer.from(text).toString('base64');
const decode = (text) => Buffer.from(text, 'base64').toString('utf8');

const buildUrl = function () {
  var date = new Date().toGMTString();
  var signature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(`host: ${CONF.HOST}\ndate: ${date}\nPOST /v1/private/s9a87e3ec HTTP/1.1`, CONF.API_SECRET));
  var authorization = encode(`api_key="${CONF.API_KEY}", algorithm="hmac-sha256", headers="host date request-line", signature="${signature}"`);
  return `https://${CONF.HOST}/v1/private/s9a87e3ec?authorization=${authorization}&date=${date}&host=${CONF.HOST}`;
}

app
  .use(cors())
  .get('/', function (req, res) {
    var text = req.query.text;
    console.log('=>', text);
    request({
      url: buildUrl(),
      method: "POST",
      json: true,
      headers: { "content-type": "application/json" },
      body: {
        "header": {
          "app_id": CONF.APPID,
          "status": 3
        },
        "parameter": {
          "s9a87e3ec": {
            "result": {
              "format": "json"
            }
          }
        },
        "payload": {
          "input": {
            "status": 3,
            "text": encode(text)
          }
        }
      },
    }, function (error, response, body) {
      if (response.statusCode == 200) {
        var idm = JSON.parse(decode(body.payload.result.text));
        console.log('  ', JSON.stringify(idm));
        return res.json(idm);
      }
      error && console.log('  ', error);
      return res.json([]);
    });
  }).use(createProxyMiddleware({
    target: CONF.PROXY_TO,
    changeOrigin: true
  })).listen(PORT, () => console.log(`[${PORT}] server started!`));

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐