-
Go + Echo で WithInternal/SetInternal を使うとエラーレスポンスのカスタマイズがうまくいかないことがある
Go 言語の Web アプリケーションフレームワークである Echo に関する小ネタです。 執筆時点 (2024/10/01) での Echo フレームワークのバージョンは v4.12.0 です。将来のバージョンでは挙動が変わる可能性があるのでご了承ください。 先にまとめ 前提知識1:NewHTTPError() 関数によるエラーレスポンスの返却 Echo では echo.NewHTTPError() 関数を用いてエラーレスポンスを返却することができます。 echo.NewHTTPError() 関数の第二引数に “エラーメッセージ” のような文字列を渡した場合、デフォルトでは {“message”: “エラーメッセージ”} というようなレスポンスボディが返却されます。 文字列の代わりに構造体を渡すことで、レスポンスボディを自由にカスタマイズすることも可能です。 echo.NewHTTPError() 関数の戻り値の型は *echo.HTTPError で、この型は error インターフェースを実装しています。そのため error 型の変数や戻り値として扱うことができます。 前提知識2:WithInternal()/SetInternal() メソッドによる内部エラー情報の設定 *echo.HTTPError.WithInternal()/SetInternal() メソッドを用いることで、echo.NewHTTPError() 関数などで作成した *echo.HTTPError に内部で発生したエラー情報を付与することができます。 この内部エラー情報はレスポンスボディには含まれませんが、サーバーのエラーログ等に出力させることができます。 前提知識3:Bind() メソッドによるリクエストのバインド echo.Context.Bind() メソッドを用いることで、リクエストのクエリ/パスパラメータ、ヘッダー、リクエストボディを構造体にバインドすることができます。 本題 ここからが本題です。 以上のようなコードで作成したサーバーに対して、以下のようにリクエストを送信するとどのようなレスポンスが返却されるでしょうか。 リクエストボディは意図的に不正な形式(”age” が数字でない)にしています。 実際に送信してみると以下のようなレスポンスが返却されます。 {“error_code”:1,”reason”:”リクエストが不正です”}…
-
フォートナイトのプレイヤー統計「Free Fortnite API」のリクエスト方法
Epic Gamesが販売・配信するTPSゲーム「フォートナイト」もシーズン9を迎えて依然勢力衰えない印象を覚える。ほかのバトルロイヤルゲームが過度のバランス調整でユーザーを失うなか、新規モードやキャンペーン、ユニークスキンの追加で初心者プレイヤーを留まらせ、楽しませてくれる。 ところが最近では、長時間労働を告発する記事により、過酷な労働環境が暴かれて話題になっている。同種のゲームに比べて豊富なアップデートには関心させられていたが、実情は、およそ週70時間労働に及ぶ極限状態で行われていたとのことだ。 「建築ゲー」ともいわれるユニークなゲーム性をもつフォートナイトだが、こんなことでファンが減ってしまうのは大変お粗末な事案だと感じた次第である。 とはいえフォートナイトを取り巻くコミュニティは盛んで、非公式APIまで公開されるなど、成長を支えている。サードパーティ製のサービスが公開されることは、Epic Gamesとしても歓迎すべき現象だろうと思う。 このエントリーでは、非公式API「Free Fortnite API」を紹介する。それにより、たくさんのサードパーティ製アプリが公開されて、春夏冬二升五合を願うためものである。 Free Fortnite APIとは Free Fortnite APIは、数百万におよぶFortniteプレイヤーの統計データを提供する。 特徴 プレイヤーデータを取得 パッチノートを入手 最新のFortniteニュースを入手 トップ10のFortniteプレイヤー情報を取得 Fortniteサーバーのステータス情報を取得 すべての権利はEpic Gamesにある 使い方 ストア情報を取得する https://fortnite-public-api.theapinetwork.com/prod09/store/get?language={language} 追加されるアイテムを取得する https://fortnite-public-api.theapinetwork.com/prod09/upcoming/get すべてのアイテムを取得する https://fortnite-public-api.theapinetwork.com/prod09/items/list 特定のアイテムを取得する https://fortnite-public-api.theapinetwork.com/prod09/item/get?ids={identifier} API統計データに基づく人気アイテム https://fortnite-public-api.theapinetwork.com/prod09/items/popular ユーザーIDを取得する https://fortnite-public-api.theapinetwork.com/prod09/users/id?username={User name} ユーザー統計を取得する https://fortnite-public-api.theapinetwork.com/prod09/users/public/br_stats_v2?user_id={User ID} チャレンジ情報を取得する https://fortnite-public-api.theapinetwork.com/prod09/challenges/get?season=current 武器情報を取得する https://fortnite-public-api.theapinetwork.com/prod09/weapons/get 最新ニュースを取得する https://fortnite-public-api.theapinetwork.com/prod09/br_motd/get?language={language} サーバー情報を取得する https://fortnite-public-api.theapinetwork.com/prod09/status/fortnite_server_status まとめ 以上が、Free Fortnite APIのリクエスト方法だ。 かくしてフォートナイトプレイヤー統計を得ることができることだろう。あとはアイデア次第である。とはいえ、有名プレイヤー情報を取得したり、パッチノートを入手したりでも見込みありだ。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。