HTTPレスポンスのbodyを標準出力に書き出す。PUT等のリクエストbodyを文字列で指定できる。環境変数DEBUGが空でない場合、リクエストとレスポンスの詳細を標準エラー出力に書き出す。hogehoge目指すところはこんな感じ。いい感じで劣化してますね。実装とりあえず、前回ご紹介したcli-initを使う手順に従って、dcurlというプロジェクトを作りました。get,post,put,deleteと指定。各コマンドの実行内容としては、HTTPメソッド名が違うだけなので、メソッド名を指定してdoRequestメソッドに処理委譲して終了。引数の取り扱いまず、postサブコマンドでは--dataっていうオプション(go界隈ではフラグって言うみたいですね)を使いますよ、という宣言が必要です。下記のFlagsに設定している内容がコレです。その他、ノリでShortNameとかUsageも埋めます。*1」ようなので、とりあえずどのメソッドでもbody指定できるようにしちゃいます。},}それぞれこんな感じにしました。略そもそも各コマンドに対してフラグ設定をするのではなく、下記のように(commands.go内ではなくmainメソッド内で)グローバルなオプションとして設定してしまう方法もあります。この方法で--dataを設定した場合、help等のサブコマンドに対しても--dataが指定できてしまうので、本当にグローバルなオプション以外は避けたほうが良いでしょう。}このように設定した上で、--dataに指定した文字列を取得するのはctx.String("data")でOK。文字列ではなく数値や真偽値を期待している場合はctx.Int("...")やctx.Bool("...")を使います。グローバルオプションの場合はctx.GlobalString("profile")という感じで取り出します。ここまで準備ができたら、次にリクエスト先のURLを得る方法です。引数が足りなかったらエラー終了させます。os.Exitはプロセスの終了メソッドです。ctx.Args()[0]}もうちょっとキレイに書けるかもしれないっすね。したら、エラー処理は外に任せるほうがいいのかもしれません。この方がGo流でしょうか。nil}HTTPリクエストを行う部分あとは、Go標準の"net/http"パッケージを使ってHTTPリクエストを実行します。Qiitaを参考にさせて頂きました。デバッグログ出力の部分は、cli-initで作成したスケルトンに下記のような定義があったので、これをそのまま使わせてもらいました。logパッケージでは基本的に標準エラー出力に出すんですね。}}まとめさて、習作としてこんなものを作ってみました。本当に簡単に作れますね。プロジェクト全体はこちらをご覧ください。0.1.0今後、このプロジェクトをごにょごにょと触っていくかもしれませんので、本エントリーの参考としてはv0.1.0のタグを参照すると良いとおもいます。脚注とは言え、あまり推奨はされていないようです。配列だったので、定数としては定義できませんでした。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。EC2)環境において、不要な踏み台サーバをなくすことができる便利なアップデートです。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介252SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健232こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。カフェ店長のオカノです。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。