本文へジャンプ

InsomniaでAPIリクエストコードを自動生成!

Posted by MONSTER DIVE

初めまして、MDのバックエンドを担当している新人エンジニアの真下と申します!

MDに入社して早3ヶ月、段々と社内で開発中のWebアプリケーションの重要な機能開発を
任せていただけるようになってきました!

現在業務でAPIに触れることが多いので、今回の記事ではAPIの開発や検証に便利なツール、
Insomniaを紹介したいと思います。

APIとは

blog20200713_3.png

API(Application Programming Interface)とは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。 IT用語辞典 e-Words

というのが定義ではありますが、Web開発におけるAPIとはHTTP/HTTPSベースのWebAPIを指すことが多いようです。

WebAPIとは、

  • Amazonの商品情報を自分のWebサイトで表示する

  • Twitterのつぶやき投稿を自分のページから行う

など特定のWebサービスの機能を簡単に他のWebページで使用できるような仕組みです。

Insomniaとは

blog20200713_5.png

RESTベースなAPIの動作確認に便利なAPIクライアント。
Insomnia | API Design Platform and REST Client
APIサーバにHTTPリクエストをGUIから簡単に投げられます。
よく比較されるAPI検証ツールとしてPostmanが挙げられますが、個人的にはInsomniaの方が
UIがシンプルで使いやすい気がします。(完全に好みです)

インストール

InsomniaにはInsomnia DesignerとInsomnia Coreの二種類がありますが、REST APIを扱う場合はInsomnia Coreを選びます。 Mac,Windows,Linuxででインストール可能ですが、今回はMac用のダウンロードリンクを掲載します。 https://insomnia.rest/download

使い方

基本的には、HTTPリクエストメゾッドを選択し、APIにリクエストを送るために必要なパラメータやクエリを選択して、
Sendを押すことでレスポンスを確認することができます。
今回はQiitaが提供するAPIを使用して、GETメゾッドでリクエストを送ってみます。
https://qiita.com/api/v2/schema?locale=ja

APIの利用制限などがあるため、気になる方はドキュメントを読みましょう。
Qiita API v2ドキュメント - Qiita:Developer

こちらがInsomniaの画面になります。 blog20200713_6.png 画面は主に3つのエリアに区切られており、

  • 左の画面でワークスペースの設定
  • 中央の画面ではHTTPメゾッドの選択やリクエストパラメータの設定
  • 画面では実際のレスポンスを確認

といったことが行えます。
今回のQiitaAPIへのGETメゾッドでのリクエストに対しては
このようにレスポンスとしてJSON形式のデータを取得することができます。 blog20200713_7.png

コードの自動生成機能

そしてこのツールの目玉機能として、Insomniaで設定したリクエストを、
主要なWeb開発で使用されているプログラミング言語のコードに変換してくれる機能があります。

大抵のプログラミング言語では、HTTPリクエスト用のライブラリが用意されているため、
実際のアプリケーション開発でこの自動生成されたコードをそのまま使用することはあまりないと思います。
しかし、APIを学習し始めた初学者がHTTPリクエストを送るためのコードの書き方や処理の流れを勉強したり、
学習したことのない新しい言語でのHTTPリクエストの書き方を学ぶといった場面で重宝すると思います。 blog20200713_8.png

それでは先ほどのGETメゾッドでのHTTPリクエストをコードに変換して、コマンドラインから実行してみましょう。
今回はRubyでコードを生成してみました。

# response.rb
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://qiita.com/api/v2/schema?locale=ja")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body

しかし、上のコードはそのままコマンドライン上で実行するとAPIからのレスポンスが非常に見づらいため、
RubyのJSONモジュールを使って、出力を整形する以下のコードを追加しました。

# response.rb
require 'uri'
~~~省略
#コメントアウトする
// puts response.read_body 

# 追加コード
response_body = JSON.parse(response.read_body)
json_str = JSON.pretty_generate(response_body)
puts json_str

モジュールについて知りたい方はこちらを参考にしてください。
Ruby 2.7.0 リファレンスマニュアル

実際に先程ののコードを実行してみた結果が以下になります。 blog20200713_9.png

確かにコードが実行されてレスポンスが確認できています。

終わりに

いかがだったでしょうか?
APIについてまだよく分からない方でも非常に手軽に扱えるのではないでしょうか。
これを機にInsomniaを活用してAPIと仲良くなりましょう!

それでは今回はこの辺りで! Happy Coding!

Recent Entries
MD EVENT REPORT
What's Hot?