PostmanとはAPIを設計、構築、テスト、コラボレーションするためのAPIプラットフォーム的なサービスです。
最近日本にもチームが立ち上がりかなりいろんなカンファレンスなどで情報発信をされていてユーザーも増えているのではないでしょうか。
このアカウントではPostmanを色々触りながら勉強していきたいと思います。
この記事ではまずはアカウント開設をやってみます。
アカウント開設
- https://www.postman.com/ にアクセスを行います。
- 画面上部の
Sign Up for Free
をクリックします。
- 必要な情報を入力して
Create Free Account
をクリックします。
- 次の画面でも必要な情報を入力して
続ける
をクリックします。
- Workspaceが起動しました。この画面でいろいろな操作が可能となります。
簡単なテスト
初回ですのでまずは簡単なテストを行います。
Send an API request
をクリックします。
テストメッセージを投げる先が必要です。
https://requestcatcher.com/
にアクセスを行います。
適当な名前を入れてGet started
をクリックします。
データ待ちの画面になります。
この状態でPostmanから値をまずはPOSTします。
ドロップダウンからPOST
を選択し以下のように情報を入力し送信
ボタンを押します。
request catcher の画面でPOSTされた値を受け取ったことがわかります。
ヘッダー
タブではヘッダーなどを色々変更したり追加できるのでテストにとても便利です。
Postman-Token
Postman-Token
という見慣れないヘッダーが出力されています。どうもリクエストごとに一意のようです。これは毎回リクエストが一意であることを担保するためのPostman独自の仕組みです。
例えばテストを行うアプリケーションレイヤーがキャッシュの仕組みを持っていたと仮定します。その際Postman-Token
が無ければ、アプリはクライアントリクエストに対してキャッシュの結果をレスポンスとして戻すため、毎回テストの度にキャッシュをクリアするなどの手間が増えますが、Postman-Token
を毎回のリクエストに一意の値として付与することでキャッシュレイヤをバイパスできます。
例えばAWSの Amazon API Gateway などはAPIリクエストに対するキャッシュのメカニズムを提供しています。Postman-Token
があることでこのキャッシュをバイパスさせることが出来ます。
この値を固定にしたい場合は以下のようにヘッダーで固定値を投入しておけば、キャッシュメカニズムのテストが可能となります。
コードスニペット
画面右側の</>
をクリックするとcurlコマンドを出力してくれます。これによりVSCodeなどでのテストも可能です。
curl --location 'https://kameman.requestcatcher.com/?myname=kameman' \
--header 'User-Agent: KamemanTest' \
--header 'X-Custome-Kameman: fromPostman'
当然ですがこの場合Postman-token
は付与されません。
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 1549
Content-Type: text/html; charset=utf-8
Last-Modified: Sun, 20 Nov 2022 19:48:09 GMT
Date: Tue, 02 Jul 2024 11:54:03 GMT
Connection: close
<html><head><title>request catcher</title><meta content="dark light" name="color-scheme"><link href="https://fonts.googleapis.com/css?family=Ubuntu+Mono|Source+Code+Pro|Cousine|Open+Sans:400,300,600" rel="stylesheet" type="text/css"><link rel="stylesheet" href="assets/static.da0603e4.css?v=0.2"><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script><script type="text/javascript" src="assets/catcher.595c1f61.js"></script></head><body> <div id="page"> <div id="content"> <div id="header"> <h1>request catcher</h1> </div> <div id="selector"></div> <div id="no-requests"> <div class="message">No requests have been received yet :(</div> <div class="try-it"> <span class="code"> curl -X POST -d 'Hello World!' https://<span id="hostname">requestcatcher.com</span>/test </span> </div> </div> <div id="requests"></div> <div class="clear"></div> </div> <div id="referral"><a href="https://m.do.co/c/fd00053f4fc6" target="_blank">Hosted on <strong>DigitalOcean</strong>. Get a $200 credit and support Request Catcher.</a></div> </div> <script>!function(e,a,t,n,g,c,o){e.GoogleAnalyticsObject=g,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),o=a.getElementsByTagName(t)[0],c.async=1,c.src="//www.google-analytics.com/analytics.js",o.parentNode.insertBefore(c,o)}(window,document,"script",0,"ga"),ga("create","UA-55875288-1","auto"),ga("send","pageview");</script> </body></html>