web-dev-qa-db-ja.com

Node.jsおよびExpressを使用した単純なAPI呼び出し

Node、API、およびWebアプリケーションを使い始めたばかりです。

Node.jsとExpressの基本的な動作は理解していますが、今は他のサービスのAPIの呼び出しを開始し、それらのデータを処理したいと考えています。

基本的なHTTPリクエストの概要を説明し、Nodeでレスポンスを取得/解析する方法を教えてください。また、リクエストに特定のヘッダーを追加することに興味があります(最初は http://www.getharvest.com APIを使用してタイムシートデータを処理します)。

追伸これは簡単そうに思えますが、多くの検索で私の質問に答えられるものは見つかりませんでした。これがだまされている場合はお知らせください。削除します。

ありがとう!

47
John

Expressでデータを取得することはできません。特定の目的には、Mikealの request ライブラリを使用する必要があります。

そのライブラリのAPIは非常に簡単です。

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Print the google web page.
  }
})

編集:httpのデフォルトのライブラリの代わりにこのライブラリを使用する方が良いでしょう。これは、はるかに優れたAPIといくつかのより高度な機能を備えているためです(Cookieもサポートします)。

51
alessioalex

Httpクライアントを使用できます。

var http = require('http');
var client = http.createClient(3000, 'localhost');
var request = client.request('PUT', '/users/1');
request.write("stuff");
request.end();
request.on("response", function (response) {
  // handle the response
});

また、 api documentation の説明に従ってヘッダーを設定できます。

client.request(method='GET', path, [request_headers])
5
Nicolas Modrzyk

2つのパッケージをインストールする必要があります。

npm install ejs 
npm install request

server.js

var request = require('request');
app.get('/users', function(req, res) {
    request('https://jsonplaceholder.typicode.com/users', function(error, response, body) {
        res.json(body)
    });
});

index.ejs

$.ajax({
    type: "GET",
    url: 'http://127.0.0.1:3000/posts',
    dataType: "json",
    success: function(res) {
        var res_data = JSON.parse(res);
        console.log(res_data);
    }
});

出力

enter image description here

3
Ram Pukar