xshoji's blog

Postmanのエクスポート機能が廃止された件(とその解決策)

目次

はじめに

APIの開発で

Postman API Platform | Sign Up for Free
https://www.postman.com/

を使っていて、最近PC入れ替えを行う際、このPostmanのバックアップ機能(エクスポート機能)が消えていて大変困ったため、 何が起こっていたのかなど、Postman側の経緯や、この対策などについてまとめます。

Postmanとは、エクスポート機能とは

Postmanとは、HTTPリクエストをGUIから実行できるツールで、リクエスト内容をスニペット的に保存しておいたり、 一部リクエスト内容を変数化して簡単にリクエスト先やリクエスト内容を切り替えたりすることができ、APIリクエストの確認や管理を効率よく行えます。

まず、PostmanをAPI開発でどう使ってるの?については、自分は

  • APIのリクエストをスニペット的に保存しておく
  • APIリクエストのURLやID等を環境変数に切り出し、本番や開発環境などを簡単に呼び出し分ける
  • APIを呼び出し前のトークン取得処理をスクリプトで自動化しておき、楽してAPIを呼び出せるようにする

といった使い方をしてます。 で、最近PCの入れ替えを行った際、APIリクエストや環境変数を一括でエクスポートする機能が削除されていることに気づきました。 このエクスポート機能とは、 APIリクエストや環境変数をまとめて一つのjsonファイルとして吐き出すことができる機能です。 APIリクエストや環境変数などをまとめてバックアップ、あるいは他の人と共有したりすることができるので大変便利でした。(※1)

※1: APIリクエストのコレクション単位、環境変数単位なら個別にエクスポートすることは引き続きできるようですが、管理が面倒です。

Export all collections in postman - Stack Overflow
https://stackoverflow.com/questions/57747235/export-all-collections-in-postman

ここで紹介されてる通り、以前はPostmanの設定を一括でエクスポートする機能がありました。 が、最新版(具体的には、バージョン 10.10.x あたりから)からはこのエクスポートボタンが消えてます。

この機能がないと、Postmanで管理してるAPIリクエストや環境変数の情報をバックアップしておくのがとても面倒なため、代替機能含めて Postman側の案内を探してみることにしました。

世の中の反応とPostman側の反応

で、すぐ見つけたIssueがこちら。

“Exporting data to single dump file” feature is gone · Issue #11738 · postmanlabs/postman-app-support
https://github.com/postmanlabs/postman-app-support/issues/11738

Postmanのサポートメンバーが

We had to remove the data dump export due to quality and performance issue caused by that capability.
データダンプのエクスポートは、その機能によって引き起こされた品質とパフォーマンスの問題のため、削除せざるを得ませんでした。

と言ってます。エクスポートする機能がパフォーマンスの問題になるってあんまりよくわからないですが、とりあえず消したかったようです。

で、Postman利用者的にはバックアップとかできないと困るので、

  • どうやってエクスポートすれば良いのか(代替機能は?)
  • エクスポート機能を復活させられないのか

といった質問がたくさんコメントされてます。

Postman側としては、アカウント登録をしてクラウドにデータをあげてくれってことのようですが、 社内限定のAPIとかだと クラウドにそういった社内の情報をアップロードできない場合もあるので、 ローカルのファイルにエクスポートする機能がないのは困ると、と言ってる人もいますね。

ただ、Postmanのサポートとしてはこの機能を復活させる気はないようで、

We understand that your company might not allow you to have data in the cloud, in which case, can you write to us at help@postman.com so that we can understand your company’s stance better and help you out.
御社がクラウドにデータを置くことを許可していないかもしれないことは理解しています。その場合、help@postman.com へ連絡を頂ければ、御社のスタンスをよりよく理解し、お役に立てるようお手伝いします。

と回答されてます。

他にも

Backup all Postman collection at once - Help - Postman Community
https://community.postman.com/t/backup-all-postman-collection-at-once/44030

(2) Vinayak on Twitter: “by deprecating postman scratchpad and forcing people to move online i feel many people will look for alternatives.. nightmare.. initially free tool.. then y’all move to cloud and share your data with us.. fckin keys n all. https://t.co/fcZvaT2ur1." / X
https://twitter.com/Vgkud/status/1686385429371863047

などで同じ話題を見つけました。

このツイートのコメントにある通り、どうやらPostman側はオンラインでユーザーのデータを管理する流れに持っていきたいようですね。

まとめると、Postmanの最新版で、エクスポート機能を使うことはできないし、今後復活することもない、という状況のようです。

どうすれば良いか

エクスポート機能を復活させるためにどうすれば良いか考えました。

まず、公式を見てみると、

exporting-data-dumps - Exporting data from Postman | Postman Learning Center
https://learning.postman.com/docs/getting-started/importing-and-exporting/exporting-data/#exporting-data-dumps

Postmanのアカウントを持っている場合は、 Request Data Export というリクエストを送ることで、Postmanのクラウド上に保存されてるデータをエクスポートするリクエストを送ることができるようです。

もし、Postmanのアカウントを作っていて、クラウド上にデータが保存されてる場合はこの方法が使えそうです。

一方で、Postmanのクラウド上にデータを保存したくない、という人の場合は、 過去のバージョンのPostmanを導入すればエクスポート機能を使えるはずです。

ここでは、過去バージョンのPostmanを入れる手順と、強制アップデートを停止させる手順をまとめます。

バックアップファイルを探して退避する

まず、Postmanのバージョンが 10.10.x 以降になってしまってる場合は、エクスポート機能が使えるバージョンまでダウングレードする必要があります。 ただし、無理やりPostmanのバージョンをダウングレードすると、アプリのバージョンの不一致が発生してアプリが起動できなくなります。 このため、Postmanの再インストールが必要ですが、そうなると現在の設定が全て失われてしまうので困ります。

これについて、現状の最新の設定はエクスポートできないのですが、

issuecomment-1547470846 - “Exporting data to single dump file” feature is gone · Issue #11738 · postmanlabs/postman-app-support
https://github.com/postmanlabs/postman-app-support/issues/11738#issuecomment-1547470846

のコメントにある通り、 AppData/Roaming/Postman ディレクトリに自動的に作成されたバックアップファイル(jsonファイル)が存在するそうです。 なので、まずはこのバックアップファイルを安全な場所に退避させましょう。

MacOSの場合は、

  • /Users/${USER}/Library/Application\ Support/Postman

にあると思います。

このバックアップファイルは、Postmanのバージョンが更新された際に作成されるようで、 エクスポート機能で作成されるものと同じフォーマットのようです。 なので、古いPostmanをインストールし直したあと、このバックアップファイルをインポートすれば設定を復活させられます。

(ただし、自動作成されるバックアップファイルのため一部情報が古い可能性があります。)

エクスポート機能付きのPostmanをインストールする

次に、エクスポート機能が削除される直前のバージョン

  • 10.9.4

をインストールします。 このとき、インストール済みのPostmanを完全に削除してからインストールしなおしてください。

MacOSの場合

brew install --cask https://raw.githubusercontent.com/Homebrew/homebrew-cask/dd2835a0d6c540843de2533cc626412781813977/Casks/postman.rb

でインストールできます。

これで、エクスポート機能が利用できるPostmanをインストールできます。

自動アップデートを無効にする

実は過去バージョンのPostmanをインストールしただけでは、自動アップデートが発動して強制的に最新バージョンへ更新されてしまいます。

これは、Postmanの設定にある Updates -> Automatically download major updates をOFFにしても強制的に更新されてしまうようです。

この問題を解決するためには、

How to disable auto update of Postman app - Stack Overflow
https://stackoverflow.com/questions/62324217/how-to-disable-auto-update-of-postman-app

で質問されてる通り、Postmanの更新サーバーへの通信をHostsの設定で遮断してやる必要があります。

このため、以下の設定を /etc/hosts に追記します。

$ cat /etc/hosts
## Disable update postman
0.0.0.0         dl.pstmn.io
0.0.0.0         sync-v3.getpostman.com
0.0.0.0         getpostman.com
0.0.0.0         go.pstmn.io

こうすることで、Postmanの強制アップデートを停止でき、エクスポート機能付きのバージョンを使い続ける事ができます。

バックアップしておいたjsonをインポートする

最初にバックアップしておいたjsonファイルをインストールしたPostmanにインポートします。

これで、過去バージョンのPostmanをインストールした状態で、設定を復元できます。

また自動アップデートも停止されているのでエクスポート機能が消された最新バージョンに意図せず更新されてしまうこともなくなります。

そもそもPostmanから別のツールに乗り換えたい

The Collaborative API Development Platform - Insomnia
https://insomnia.rest/

Kong/insomnia: The open-source, cross-platform API client for GraphQL, REST, WebSockets and gRPC.
https://github.com/Kong/insomnia

オープンソースで開発されてるInsomniaならユーザーファーストで開発されてるはずなのでPostmanみたいなことは起こらなさそう、と思いました。

ちなみに、Postmanの設定をInsomniaのインポートデータに変換するスクリプトを作っている人を見つけました。

Postman to Insomnia – allsyed’s blog
https://allsyed.com/posts/postman-to-insomnia/

こちらを使ってPostmanの設定をInsomniaの設定にマイグレできるみたいなので使ってみても良いかもしれません。