Help us understand the problem. What is going on with this article?

ChatworkAPIにexpressからrequestモジュールで接続

More than 5 years have passed since last update.

やっと利用申請していたチャットワークAPIの利用許可がおりました!!
ので、実際に使ってみます。

チャットワークAPI

このAPIは自分史上初めてのタイプでheaderにtokenをセットして送信することでGETやPOSTで値を取れます。

サンプルリクエスト

サンプルリクエストのcurlコマンドに -Hオプションでヘッダー情報を送っているのが分かります。

$ curl -X GET -H "X-ChatWorkToken: YOUR API KEY" "https://api.chatwork.com/v1/rooms"

"X-ChatWorkToken: YOUR API KEY"という形でAPI KEYを渡します。

node.jsから接続したらconnect ECONNREFUSEDってエラー

http.request()やhttp.get()で上手く接続出来ませんでした汗
このエラーが出てたんですけど、イマイチ分からず...エモい人教えて下さい汗

参考: Node.js v0.10.29 Manual & Documentation
参考: Node.js Error: connect ECONNREFUSED when using http.request - Stack Overflow

expressでページアクセスした際にチャット一覧を表示

requestモジュールでとりあえず解決

デフォルトのHTTPモジュールだと上手くいかなかったのと、
Node.jsのchatwork接続用のモジュールの内部でrequestモジュールを利用していたことから、requestモジュールを使って試したら上手くいきました。

$ express -e chatwork
$ cd chatwork
$ npm install
$ npm install request
routes/index.js
var express = require('express');
var router = express.Router();
var request = require('request');

router.get('/', function(req, res){
    var options = {
        url: 'https://api.chatwork.com/v1/rooms',
        headers: {
            'X-ChatWorkToken': 'YOUR API KEY'
        },
        json: true
    };

    request.get(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {

            console.log(body[0]);
            res.render('index', {data:body});
        }else{
            console.log('error: '+ response.statusCode);
        }
    });
});

module.exports = router;

今回はチャットルーム名とチャットルームのicon画像を表示させます。

index.ejs
<!DOCTYPE html>
<html>
  <head>
    <title>getてすと</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <ul>
    <% data.forEach(function(val){ %>
        <li><%/*= val.room_id*/ %></li>
        <li><%= val.name %></li>
        <img src="<%= val.icon_path %>" alt="">
        <br />
    <% }) %>
  </ul>
  </body>
</html>

localhost:3000にアクセスすると

こんな感じでリストが表示されました! めでたし!

参考: Requestモジュール
参考: Node.js: request モジュールを使って GET リクエストを行う

いずれはhubotでChatworkBotを作るところまでやりたいです。

n0bisuke
プロトタイピング専門スクール「プロトアウトスタジオ」で教えたりしてます。 プロフ -> https://dotstud.io/members/n0bisuke
https://protoout.studio
dotstudio
全ての人がモノづくりを楽しむ世界を目指して活動しています。
https://dotstud.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away