nodejs调用科大讯飞文本纠错
const express = require("express");const app = express();const request = require("request");const CryptoJS = require("crypto-js");const APPID = 'ef5c4e0a'const API_SECRET = 'ZDU5MmU5MzAyNDhkOWY5MDE3ND
·
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!`));
更多推荐
所有评论(0)