RubyのHTTPクライアントライブラリFaradayを使って、kintoneのAPIを叩いてレコードを取得したりしてみたときのメモです。
はじめに
少し前に、Qiitaにnet/http を使って kintone の REST API を叩く記事を書いたのですが、Ruby Gemsの HTTPクライアントライブラリFaradayがよく使われているらしいので、Faradayでもkintone REST API を叩いてみたいと思います。
動作環境
- mac OS10.14.6
- Ruby 2.6.3
- Homebrew 2.1.16
- rbenv 1.1.2
- Pry version 0.12.2 on Ruby 2.6.3
- faraday 0.17.0
macな方のRubyの環境構築はこちらを参考にしてください。
faraday のインストール
Gemfileに追記 gem 'faraday'
bundle install
faradayのテスト
$ pry
[1] pry(main)> require 'faraday'
=> true
[2] pry(main)> response = Faraday.get 'https://api.openbd.jp/v1/get?isbn=978-4-87311-686-0&pretty'
[5] pry(main)> require 'json'
=> false
[14] pry(main)> JSON.parse(response.body) => [{"onix"=>
{"RecordReference"=>"9784873116860",
"NotificationType"=>"03",
"ProductIdentifier"=>{"ProductIDType"=>"15", "IDValue"=>"9784873116860"},
"DescriptiveDetail"=>
{"ProductComposition"=>"00",
"ProductForm"=>"BZ",
"Measure"=>
[{"MeasureType"=>"01", "Measurement"=>"240", "MeasureUnitCode"=>"mm"},
{"MeasureType"=>"02", "Measurement"=>"0", "MeasureUnitCode"=>"mm"}],
"TitleDetail"=>
{"TitleType"=>"01",
"TitleElement"=>
{"TitleElementLevel"=>"01",
"TitleText"=>
{"collationkey"=>"ウェブ エーピーアイ ザ グッド パーツ",
"content"=>"Web API:The Good Parts"}}},
(省略)
faraday でkintone API を叩くテスト
[API 一覧の取得]APIを叩いてみます。
https://developer.cybozu.io/hc/ja/articles/201941934
- HTTP メソッド: GET
- URI: https://(サブドメイン名).cybozu.com/k/v1/apis.json
コード
apis.rb
require 'rubygems'
require 'bundler/setup'
require 'dotenv/load'
require 'faraday'
require 'pp'
require 'json'
url = "https://#{ENV['SUBDOMAIN']}.cybozu.com"
connection = Faraday.new(url: url)
response = connection.get '/k/v1/apis.json'
puts JSON.pretty_generate(JSON.parse(response.body))
puts response.status
puts response.success?
出力
$ ruby -w get_apps.rb
{
"baseUrl": "https://{ドメイン名}.cybozu.com/k/v1/",
"apis": {
"app/acl/get": {
"link": "apis/app/acl/get.json"
},
"app/acl/put": {
"link": "apis/app/acl/put.json"
},
"app/customize/get": {
"link": "apis/app/customize/get.json"
},
"app/form/fields/get": {
"link": "apis/app/form/fields/get.json"
},
"app/form/layout/get": {
"link": "apis/app/form/layout/get.json"
},
"app/get": {
"link": "apis/app/get.json"
},
"app/settings/get": {
"link": "apis/app/settings/get.json"
},
(省略)
200
true
Basic認証
コード
apis_basic_auth.rb
require 'rubygems'
require 'bundler/setup'
require 'dotenv/load'
require 'faraday'
require 'pp'
require 'json'
url = "https://#{ENV['SUBDOMAIN']}.cybozu.com"
connection = Faraday.new(url: url)
connection.basic_auth(ENV['BASICAUTHID'], ENV['BASICAUTHPASS'])
response = connection.get '/k/v1/apis.json'
puts JSON.pretty_generate(JSON.parse(response.body))
puts response.status
puts response.success?
追記していきます。
参考リンク
- [faraday] https://rubygems.org/gems/faraday/versions/0.17.0
- [Ruby の HTTP クライアントライブラリ Faraday が便利そう] https://gist.github.com/mitukiii/2775321
- https://www.rubydoc.info/gems/faraday/0.17.0
- [Ruby HTTPクライアントの比較表] https://qiita.com/aosho235/items/559603ef98587ae4cfc1
- [Faradayの使い方 59のレシピ]http://nekorails.hatenablog.com/entry/2018/09/28/152745