1

私は、NLP API を内部的に呼び出す独自の REST API を持っています。そのために、URL にデータを投稿する必要があります。これを達成するために針を使用していますが、キャッチできないエラーがあり、自分の API がフロントエンドに 500 を返しています。

ここに私のserver.jsコードのその部分があります:

app.post('/api/get',function(req,res) {
  //console.log(req);
  console.log("here in post ");
  if(!req.body){
    return res.send(400);
  }
  //console.log(req.body.msg);
  var searchQuery =  req.body.msg;
  var options = { 'api-key' : '3080a0e0-1111-11e5-a409-7159d0ac8188' };

  needle.post('http://api.cortical.io:80/rest/text/keywords?retina_name=en_associative',searchQuery,options,function(err, resp){
    if(err){
      console.log('something went wrong :' + err);
    }
    console.log('Got :'+resp );
});

here in post毎回届きますが、それ以降はありません。また、外部 API の API キーを指定するこの正しい方法にも興味があります。

ありがとう。

4

1 に答える 1

1

Express 4.x を使用している場合、Express サーバーを構成したかどうかはわかりませんが、body-parser をインストールして、Express 構成に次の行を追加する必要があります。

var express = require('express');
var app = express();
var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

Express 3.x バージョンを使用している場合、body-parser をインストールする必要はありません。

var express = require('express');
var app = express();

app.use(express.json());
app.use(express.urlencoded());


あなたの投稿ルートに関して、私はそれを少し編集しました:

var config = require('./config');

app.post('/api/get', function (req, res) {
  var searchQuery = {
    q: req.body.msg
  };

  var NEEDLE_API_KEY = config.needle.API_KEY;
  var NEEDLE_URL = config.needle.URL;

  var options = {
    'api-key': NEEDLE_API_KEY
  };

  needle.post(NEEDLE_URL, searchQuery, options, function (err, needleResponse) {
    console.log(err || needleResponse.body);
    res.json(err || needleResponse.body);
  });

});

そのため、すべての API キー、サード パーティ サービスの URL を参照するために、config.jsという新しいファイルを追加しました。

module.exports = {
  needle: {
    API_KEY: process.env.NEEDLE_API_KEY,
    URL: 'http://api.cortical.io:80/rest/text/keywords?retina_name=en_associative'
  }
};

したがって、コンソールでサーバーを実行するときは、設定値を NEEDLE_API_KEY というグローバル環境変数に渡す必要があります。

NEEDLE_API_KEY=666 node app.js

したがって、この方法では、ソース コードにキーを保存するのではなく、サーバー マシンでのみ使用可能なグローバル環境変数にキーを保存します。

于 2015-06-06T13:21:03.903 に答える