reqdumper
2026-02-23 19:15:24内容が古くなっている可能性があるのでご注意ください。
受け取った HTTP リクエストの内容を出力するだけの HTTP サーバー
ヘッダーやらボディやら、アップロードしたファイルの確認やらをすることができます。
APIを利用するクライアントを作るときの動作確認用途で作りました。
ダウンロード
使い方
reqdumper
ブラウザーやAPIクライアントから http://localhost:12345/ ☐↗ にアクセスします。
すると、↓このようなログが出力されます。
{
"Timestamp": "2022-06-06T22:38:22.2368803+09:00",
"URI": "/",
"Protocol": "HTTP/1.1",
"Method": "POST",
"RemoteAddr": "127.0.0.1:55112",
"Header": {
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "50",
"Content-Type": "application/json",
"User-Agent": "vscode-restclient"
},
"QueryParam": {},
"FormParam": {},
"File": {},
"Body": "{\r\n \"name\": \"hoge\",\r\n \"value\": \"HOGEHOGE\"\r\n}",
"Trailer": {}
}
↑の出力例は、reqdumper --lf jsonindent をした場合の出力です。
デフォルト (--lf json) は1行で出力され見ずらいので、改行・インデント込みのフォーマットでの出力例をお見せしました。
ログフォーマット
オプション --logformat もしくは --lf にフォーマットを指定します。
例: reqdumper --lf markdown
指定できるフォーマットは、以下の4つです。
json(default)jsonindenttextmarkdown
ログは、アクセスがあったタイミングで標準出力に出力されます。
注意なのが、json, jsonindent を指定した場合であっても、特にカンマ等での連結はされません。
つまり、↓のような出力になります。
{ ... }
{ ... }
JSONの配列になったりもしません。
そういう意味では json 系のフォーマットは微妙かもしれません。
jq で加工すれば配列にすることもできますが、ちょっと面倒です。
個人的には markdown がおすすめです。
## 2022-06-06T22:37:35.2989094+09:00
### Request
POST / HTTP/1.1
#### Remote Address
`127.0.0.1:55105`
### Headers
| name | value |
|------|-------|
| `Accept-Encoding` | `gzip, deflate` |
| `Connection` | `close` |
| `Content-Length` | `50` |
| `Content-Type` | `application/json` |
| `User-Agent` | `vscode-restclient` |
### Body
{
"name": "hoge",
"value": "HOGEHOGE"
}
–no-md-use-codequote
LogFormatとして markdown を指定した場合、デフォルトでは各ヘッダーの名前や値、ボディーがバックティック (`) で囲まれます。
オプション --no-md-use-codequote を指定することで、その挙動を抑止します。
例: reqdumper --lf markdown --no-md-use-codequote
Body と FormParam と File
Go言語の話になって恐縮ですが、http.Request.ParseForm() もしくは http.Request.ParseMultipartForm() に成功した場合は FormParam や File に値が入ります。 この場合、Body には値が入りません。
上記の ParseXXX() に失敗した場合は Body に値が入ります。
ファイルの扱い
ファイルの中身はログとしては出力されません。 ログとは別にファイルとして出力されます。
オプション --fileformat に出力ファイル名のフォーマットを指定します。
デフォルトは、file/{uri_asdir}/{filename}_{year}{month}{day}_{hour}{minute}{second}{nano}{ext} です。
| 表記 | 説明 |
|---|---|
| {year}{month}{day} | 日付 |
| {hour}{minute}{second}{nanosecond}{nano} | 時刻 |
| {uri}{url} | URI の各要素を _ で区切ったもの |
| {uri_asdir}{url_asdir} | URI の各要素ごとのディレクトリー |
| {paramname} | ファイルのパラメーター名 |
| {filename} | ファイル名から拡張子を抜いたもの |
| {ext} | . から始まる拡張子 |
- 📄 Hugo テーマ 9. Pagefind でサイト内検索機能を付ける2026-06-15 00:11:30静的なインデックスを使った検索 UI を提供する Pagefind を組み込みます。
- 📄 Hugo テーマ 8. Shortcodes と Render hooks2026-06-15 00:11:30Markdown で記述したコンテンツ (テーマの利用側) に対して Hugo が用意した HTML 変換の仕組みを解説します。
- 📄 Hugo テーマ 7. layouts/baseof.html をいじる2026-06-15 00:11:30サイト全体に共通する、ページのレイアウト定義を編集します。
- 📄 Hugo テーマ 6. layouts/home.html をいじる2026-06-15 00:11:30トップページのレイアウト定義を編集します。
- 📄 Hugo テーマ 5. layouts/section.html をいじる2026-06-15 00:11:30content 内のディレクトリーに対応するレイアウト定義を編集します。
- 📄 Hugo テーマ 4. layouts/page.html をいじる2026-06-15 00:11:30コンテンツに対応するページのレイアウトを編集します。
- 📄 Hugo テーマ 3. 作られたファイル2026-06-15 00:11:30前回作ったテーマを構成するファイルを解説します。
- 📄 Hugo テーマ 2. まずは作ってみる2026-06-15 00:11:30テーマを作りプロジェクトに適用するところまでを解説します。
- 📄 Hugo テーマ 1. はじめに2026-06-15 00:11:30連載「Hugo テーマ」を行う背景とその方針を説明します。
- 📄 vvin2026-05-30 16:58:07Windows のウィンドウサイズを操作する CLI アプリ