如何将服务连接到 Cloud Foundry 应用程序?
How do I connect service to a Cloud Foundry app?
我是 IBM 云的新手,我正在尝试构建一个应用程序,我可以在其中编写文本,按下按钮,服务音调分析器会分析该文本并返回 JSON,所以我可以展示一下。
我已经创建了上述服务的实例,并使用服务上的 'connections' 选项卡将其连接到我的应用程序(工具链)。
我的应用程序的 app.js 文件中也有此代码:
const ToneAnalyzerV3 = require('ibm-watson/tone-analyzer/v3');
const { IamAuthenticator } = require('ibm-watson/auth');
const toneAnalyzer = new ToneAnalyzerV3({
version: '2019-10-10',
authenticator: new IamAuthenticator({
apikey: [API key found in service credentials],
}),
url: [API url found in service credentials],
});
app.get('/', function(req, res) {
res.render('index');
});
app.post('/api/tone', async function(req, res, next) {
try {
const { result } = await toneAnalyzer.tone(req.body);
res.json(result);
} catch (error) {
next(error);
}
});
问题是,当我在 javascript 上进行以下调用时:
$.post( "/api/tone", {text: textInput}, function(data){
console.log(data);
});
我收到错误:500(内部服务器错误)。
有人知道我做错了什么吗?
问题是您正在发送 req.body
以进行音调分析。如果你看一下 API 文档 - https://cloud.ibm.com/apidocs/tone-analyzer?code=node#tone - 你会发现你只需要发送
const toneParams = {
toneInput: { 'text': text },
contentType: 'application/json',
};
我非常怀疑 req.body
有一个 toneInput
字段,如果它确实有 contentType
它可能没有设置为允许的值之一。
我是 IBM 云的新手,我正在尝试构建一个应用程序,我可以在其中编写文本,按下按钮,服务音调分析器会分析该文本并返回 JSON,所以我可以展示一下。
我已经创建了上述服务的实例,并使用服务上的 'connections' 选项卡将其连接到我的应用程序(工具链)。
我的应用程序的 app.js 文件中也有此代码:
const ToneAnalyzerV3 = require('ibm-watson/tone-analyzer/v3');
const { IamAuthenticator } = require('ibm-watson/auth');
const toneAnalyzer = new ToneAnalyzerV3({
version: '2019-10-10',
authenticator: new IamAuthenticator({
apikey: [API key found in service credentials],
}),
url: [API url found in service credentials],
});
app.get('/', function(req, res) {
res.render('index');
});
app.post('/api/tone', async function(req, res, next) {
try {
const { result } = await toneAnalyzer.tone(req.body);
res.json(result);
} catch (error) {
next(error);
}
});
问题是,当我在 javascript 上进行以下调用时:
$.post( "/api/tone", {text: textInput}, function(data){
console.log(data);
});
我收到错误:500(内部服务器错误)。
有人知道我做错了什么吗?
问题是您正在发送 req.body
以进行音调分析。如果你看一下 API 文档 - https://cloud.ibm.com/apidocs/tone-analyzer?code=node#tone - 你会发现你只需要发送
const toneParams = {
toneInput: { 'text': text },
contentType: 'application/json',
};
我非常怀疑 req.body
有一个 toneInput
字段,如果它确实有 contentType
它可能没有设置为允许的值之一。