如何将服务连接到 Cloud Foundry 应用程序?

我是 IBM 云的新手,我正在尝试构建一个应用程序,我可以在其中编写文本,按下按钮,然后由返回 JSON 的服务音分析器分析该文本,以便我可以显示它。

我创建了该服务的一个实例,并使用服务上的“连接”选项卡将其连接到我的应用程序(工具链)。

http://img.mukewang.com/64a6966f0001bd7623630556.jpg

我的应用程序的 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(内部服务器错误)。


有人知道我做错了什么吗?


慕哥9229398
浏览 119回答 1
1回答

慕盖茨4494581

问题是您发送的内容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它可能不会被设置为允许的值之一。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript