LoginSignup
13
11

More than 5 years have passed since last update.

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

Posted at

やっと利用申請していたチャットワーク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を作るところまでやりたいです。

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11