router

自作HTTPルーターから新しいServeMuxへ

アプリケーション

概要 これまでgoblinという自作HTTPルーターを自分のアプリケーションで使っていたが、Go1.22でServeMuxの機能が拡張されてからはServeMuxを使うようになった。 この記事では、Go1.22で追加されたServeMuxの機能や性能について整理し、これからのGoのHTTPルーター選定について考えてみる。 Go1.22で追加されたServeMuxの機能 Go1.22rcの公開時にS...

Golang router

HTTP Routerの自作で参考にした資料

アプリケーション

goblinの開発で参考にした各種ソースや自分の記事をリストアップする。 いくつかの自分のブログ記事に参考リンクを貼ったりしていたせいで分散していたので集約した。 参考 HTTP Routerの開発で参考にした資料リスト。 GitHub jba/muxpatterns importcjj/trie-go julienschmidt/httprouter gorilla/mux gowww/rou...

router HTTP URLルーティング リンク集

GoでServeMuxの機能拡張を提案するProposalがAcceptedになった

アプリケーション

以前からウォッチしていたnet/http: enhanced ServeMux routing #61410がAcceptedになったので、それについてポエムをかく。 最終的な仕様がどうなるかはわからないが、静的なルーティングの機能(/foo/barのような固定値のルーティング)しか持っていないServeMuxに動的なルーティング(/foo/:idのようなパスパラメータを使ったルーティング)の機能...

Golang router HTTP

自作ルーティングをアップデートした

アプリケーション

概要最近、自作ルーティングのgoblinをアップデートしたのでその記録を書き残しておく。 以下は過去ルーティングについて書き残した記事。他にも実装検討フェーズの記事があるが、内容があまり良くないので割愛。 URLルーティング自作入門 エピソード1 URLルーティング自作入門 エピソード2 GolangのHTTPサーバーのコードリーディング Introduction to URL router f...

Golang OSS router

GolangでgoblinというURLルーターを自作した

アプリケーション

概要 GolangでURLルーターを自作したので実装するまでの過程をメモしておく。 準備 URLルーターを実装する際に行った下準備をまとめる。 データ構造とアルゴリズム URLをどのようにマッチングさせるか、というロジックについて検討する。 多くのライブラリでは、データ構造として木構造がよく扱われているので、どんな種類の木構造を採用するかを考えてみた。 文字列探索に特化した木の中で、時間的・メモリ...

Golang URLルーティング router

URLルーティング自作入門 エピソード2

アプリケーション

概要 この記事はURLルーティング自作入門 エピソード1の続きで、Makuake Development Team Advent Calendar 2019の15日目となります。 URLルーティングを自作する 前回の続きです。 ルーターを自作するにあたり、ルーターがどういった処理を行うのかデータ構造の観点から考えてみます。 ルーターがどんなInputを受け取って、どんなOutputを返すのか、動...

HTTP URLルーティング router

URLルーティング自作入門 エピソード1

アプリケーション

概要 この記事はMakuake Development Team Advent Calendar 2019の14日目の記事です。 趣味で駆け出し※URLルーティング自作マンをやっているので、URLルーティング自作界隈※に入門したい人に向けた記事となれば幸いです。 ※駆け出しというキーワードが今年はWeb界隈で流行り?ましたね。私は去年末からURLルーティング自作を始めたので駆け出しだと思います。 ...

HTTP URLルーティング router

GolangのHTTPサーバーのコードリーディング

アプリケーション

概要 この記事はQiita - Go6 Advent Calendar 2019の20日目の記事です。 GolangでHTTPサーバーを立てるコードの詳細を追ってコードリーディングします。 参考実装 コードリーディングしていく実装はこちら。 package main import ( "net/http" ) func main() { mux := htt...

Golang コードリーディング router

URLルーティングをつくる エピソード3(完結編)

アルゴリズムとデータ構造

概要 URLルーティングをつくる エピソード1 とURLルーティングをつくる エピソード2 でURLルーティングの自作について試行錯誤の過程を記してきたが、ようやく一段落させることができたので完結編という形で締括くりたい。 完結、といっても課題はいくらでもあるし突き詰めるとこればっかりに時間をかけることができるようなモノであるということは承知している。。。 前回までの話し エピソード1 では、ルー...

PHP URLルーティング HTTP 木構造 router

URLルーティングをつくる エピソード2

アルゴリズムとデータ構造

概要 URLルーティングをつくる エピソード1の続き。 とりあえず動く形のものを仕上げてpackagist - ahi-routerという名前でパッケージ公開した。 エピソード1からの変更点 エピソード1では、データ構造に木構造を採用してルーティングを作ろうというと試みた。 パフォーマンスが考慮されているライブラリでは、木構造を生成するロジックを用意して、最適化された探索アルゴリズムを実装するよう...

HTTP URLルーティング 木構造 router