我尝试使用来自 Windows Azure 的非常基本的 API 调用来翻译一些文本。他们给出了一个快速入门示例代码 https://learn.microsoft.com/en-us/azure/cognitive-services/translator/quickstart-nodejs-translate.
我尝试了这段代码,效果很好。文本Hello world
被翻译成德语和意大利语。
我删除了我的个人订阅密钥。
这是示例:
const request = require('request');
const uuidv4 = require('uuid/v4');
const subscriptionKey = '........';
let options = {
method: 'POST',
baseUrl: 'https://api.cognitive.microsofttranslator.com/',
url: 'translate',
qs: {
'api-version': '3.0',
'to': ['de', 'it']
},
headers: {
'Ocp-Apim-Subscription-Key': subscriptionKey,
'Content-type': 'application/json',
'X-ClientTraceId': uuidv4().toString()
},
body: [{
'text': 'Hello World!'
}],
json: true,
};
request(options, function(err, res, body){
console.log(JSON.stringify(body, null, 4));
});
看起来这段代码是一个服务器端库node
。现在我需要将此代码集成到我的 [aurelia][2] 应用程序中。所以我想到使用aurelia-fetch-client
来替换request
方法。我使用 Aurelia CLI。
这是我所做的:
在package.json中添加:
"dependencies": {
....
"@types/uuidv4": "^2.0.0",
...
"uuidv4": "^4.0.0",
}
在 aurelia.json 中添加:
"dependencies": [
...
"uuidv4"
]
Run npm install
在我的控制台内。
创建了一个测试页面:
import { HttpClient, json } from 'aurelia-fetch-client';
import { autoinject } from 'aurelia-framework';
import * as uuidv4 from 'uuidv4';
import secret from '../secret';
@autoinject
export class Translator {
constructor(httpClient: HttpClient) {
this.httpClient = httpClient;
}
private httpClient: HttpClient;
private translate(from, to, html) {
debugger;
var init: RequestInit =
{
method: 'POST',
//mode: 'no-cors',
headers: {
'Ocp-Apim-Subscription-Key': secret.translatorKey,
'Content-type': 'application/json',
//'Content-Type': 'application/x-www-form-urlencoded',
'X-ClientTraceId': uuidv4().toString()
},
credentials: 'same-origin',
body: $.param({
'api-version': '3.0',
'from': 'en',
'to': 'fr',
'text': '<b>Hello World!</b>' })
//body: json({ 'text': '<b>Hello World!</b>' })
};
this.httpClient.fetch(`https://api.cognitive.microsofttranslator.com/`, init)
.then((result) => {
debugger;
})
.catch((error) => {
debugger;
});
}
诀窍是能够将选项传递给request
示例代码并将其调整为aurelia-fetch-client
。我没有成功。
不幸的是我总是收到以下错误:
访问 ' 获取https://api.cognitive.microsofttranslator.com/ https://api.cognitive.microsofttranslator.com/'从原点'http://本地主机:9000 http://localhost:9000' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:预检请求不允许重定向。
有什么建议 ?