郵便配達で、私は正常にこのリクエストを行うことができます:
そして、この応答を取得します。
ここで、node.jsのserver.jsファイルで同じリクエストを実行します。
_const fetch = require('node-fetch')
const SEN_URL = "http://www.sentiment140.com/api/bulkClassifyJson" // URL of sentiment analysis
app.get('/api/sentimenttest', async (req, res) => {
try{
var sentiments = await fetch(SEN_URL, {method: "POST", body: {"data": [{"text": "I love you"}, {"text": "I hate you"}]}})
console.log(sentiments)
res.send(sentiments)
}catch(error){
console.log(error)
}
})
_
これは機能しません。 localhost:5000/api/sentimenttestにアクセスすると、ブラウザーに次のように表示されます。
_{"size":0,"timeout":0}
_
コンソール出力は次のとおりです。
_ Response {
size: 0,
timeout: 0,
[Symbol(Body internals)]:
{ body:
PassThrough {
_readableState: [ReadableState],
readable: true,
_events: [Object],
_eventsCount: 2,
_maxListeners: undefined,
_writableState: [WritableState],
writable: false,
allowHalfOpen: true,
_transformState: [Object] },
disturbed: false,
error: null },
[Symbol(Response internals)]:
{ url: 'http://www.sentiment140.com/api/bulkClassifyJson',
status: 200,
statusText: 'OK',
headers: Headers { [Symbol(map)]: [Object] } } }
_
リクエストは郵便配達員でうまく機能するため、問題はノードフェッチ、またはそれを使用する方法、具体的にはbody
パラメーターがfetch()
呼び出しで提供される方法にあると思います。ブラウザーでは_"size":0
_と表示されるため、API呼び出しには必要なものが含まれていないようです。
これを修正するにはどうすればよいですか?
あなたはjsonを待つ必要があります。
_var sentiments = await fetch(SEN_URL, {method: "POST", body: {"data": [{"text": "I love you"}, {"text": "I hate you"}]}})
//Here
await sentiments.json()
_
また、bodyにJSON.stringify()
を使用してリクエストを行うこともできます。そして、jsオブジェクトの管理が簡単になります。このような:
_var data = {data: [{text: "I love you"}, {text: "I hate you"}]};
var body = JSON.stringify(data);
var sentiments = await fetch(SEN_URL, { method: "POST", body: body });
_