ブックマーク / tchssk.hatenablog.com (10)

  • AutoTrailingSlash という Goa v3 プラグインを作った - tchsskのブログ

    autotrailingslash は Goa v3 のプラグインで、末尾スラッシュのついた HTTP リクエストをハンドリングできるようにします。 Goa v3 は、v3.13.0 でデフォルトの HTTP ルーターを chi に切り替えました。この変更により、末尾にスラッシュが付いているリクエストが v3.12.4 以前と同じようには処理されなくなりました。このプラグインは以前の httptreemux のような動作を再現します。 github.com プラグインの有効化 プラグインを有効にするには、下記のように autotrailingslash を import します。 import ( _ "github.com/tchssk/goaplugins/v3/autotrailingslash" . "goa.design/goa/v3/dsl" )

    AutoTrailingSlash という Goa v3 プラグインを作った - tchsskのブログ
    ikawaha
    ikawaha 2023/09/25
  • CodegenDisabler という Goa v3 プラグインを作った - tchsskのブログ

    codegendisabler は Goa v3 のプラグインで、コードジェネレータの部分的な無効化を可能にします。 github.com プラグインの有効化 プラグインを有効にするには、下記のように codegendisabler の package を import します。 import ( _ "github.com/tchssk/goaplugins/codegendisabler/gen/http/client/types/client_body_init" . "goa.design/goa/v3/dsl" ) このコードは、 gen/http/<service>/client/types.goというファイル にコード生成を行う処理の内、 client-body-init というセクションテンプレート名の箇所を無効化します。 codegendisabler 配下の packa

    CodegenDisabler という Goa v3 プラグインを作った - tchsskのブログ
    ikawaha
    ikawaha 2020/06/04
  • Go で書かれた API Gateway "KrakenD" - tchsskのブログ

    これは Go3 Advent Calendar 2017 の 10 日目の記事です。 小さな役割を持つサービス群でアプリケーションを構成する、いわゆる Microservices が流行して久しいですね。サービスが細かく分割されるとき、それらを取りまとめるサービスが必要になることがあります。一般に API GatewayAPI Aggregator と呼ばれるものです。 そんな API Gateway のひとつに Go で書かれた KrakenD というものがあります。 KrakenD - Open source API Gateway 今回はこれを試してみます。 仕様 複数のバックエンド API を集約 (aggregate) する動きを見るため、以下のような仕様でサービスを構築してみます。 バックエンドに GitHub と Qiita の Web API を使用する Kraken

    Go で書かれた API Gateway "KrakenD" - tchsskのブログ
    ikawaha
    ikawaha 2017/12/10
    ふむふむ
  • goa で静的ファイル配信に go-bindata を使う - tchsskのブログ

    goa には静的ファイル配信のための DSL として Files が用意されており、以下のような定義を行うと FileServer を生成してくれます。 Files("/swagger/*filepath", "public/swagger/") 生成される FileServer は http.FileSystem という interface を通してファイルオープンを行うのですが、従来は http.Dir という実装を固定で使う仕様になっていました。 http.Dir は実行環境のネイティブファイルシステムからファイルオープンを行います。これは、ビルドしたバイナリを実行環境にデプロイする際に Files で定義した静的ファイルもそのファイルシステム上に配置する必要がある、ということを意味します。 Go は、ビルドしたバイナリひとつをデプロイすれば動作する、いわゆるシングルバイナリが魅力の

    goa で静的ファイル配信に go-bindata を使う - tchsskのブログ
    ikawaha
    ikawaha 2017/07/11
    サーバと一緒にサーバ仕様も 1binary で配布できるようになった 🙌
  • goa へのプルリクエストの送り方 (バックポート編) - tchsskのブログ

    goa へのプルリクエストの送り方 (バックポート編) です。 goa では互換性維持のため master と v1 を別ブランチで管理しています。そのため、プルリクエストが master にマージされたあと、その変更を v1 ブランチにバックポートするようお願いされることがあります。編ではその手順について解説します。 1. リポジトリに移動 コンソールで以下のコマンドを実行します。 $ cd $GOPATH/src/github.com/goadesign/goa 2. v1 から新しいブランチをチェックアウト コンソールで以下のコマンドを実行します。 $ git fetch $ git checkout -b $BRANCHNAME origin/v1 $BRANCHNAME には任意のブランチ名を入れてください。例えばブランチ名を foo-bar-v1 とする場合は以下の様になりま

    goa へのプルリクエストの送り方 (バックポート編) - tchsskのブログ
    ikawaha
    ikawaha 2017/06/28
    丁寧な goa への pr の送り方最終回.goa に pr おくるとホッコリできるので手引きを参考に是非 pr 送るべき
  • goa 公式サイトを日本語翻訳した & goa の開発メンバーになった - tchsskのブログ

    goa 公式サイトを日語翻訳した 昨年始めた goa 公式サイトの日語翻訳が終わりました。 goa.design 日の開発者にあまり使われてないのは日語のリソースが少ないからでは、ということで昨年末に ikawaha さんとプロジェクトを開始したのですが、結構分量があったので数ヶ月かかってしまいました。細かい修正は残っているものの、一旦は年度内に完了できてよかったです。 Go で Web API の開発を行う際には是非 goa を候補に加えてみて下さい。 goa の開発メンバーになった 2 月末に goa の開発メンバーになりました。 先日アナウンスされた v1.2.0 のポストでも大きく取り上げてもらいました。 goa.design 以下、引用です。 Taichi was one of the first contributors to goa, his contribution

    goa 公式サイトを日本語翻訳した & goa の開発メンバーになった - tchsskのブログ
    ikawaha
    ikawaha 2017/04/18
    かっこよくコード吐くコード書く goa のコアメンバーすごい 🙌
  • なぜ goa の DSL はブランク識別子への代入が必要なのか - tchsskのブログ

    goa のトップレベル DSL goa の design は DSL をネストさせながら記述しますが、その一番上の階層に来るものをトップレベル DSL と呼びます。標準で用意されている apidsl では以下の DSL がそれに当たります。 API() Resource() Type() MediaType() 前提として、すべての DSL は Go の関数であり、それを用いて記述される design は Go のソースコードです。 トップレベル DSL の記述 goa ではトップレベル DSL を以下のように記述します。 var _ = API("cellar", func() { // Definitions. }) なぜ以下のように書けないのでしょうか? API("cellar", func() { // Definitions. }) Go の言語仕様 まず Go の言語仕様を確認

    なぜ goa の DSL はブランク識別子への代入が必要なのか - tchsskのブログ
    ikawaha
    ikawaha 2017/03/31
    なるほど
  • Swagger 定義から goa の design を生成する ago という CLI を作りはじめた - tchsskのブログ

    これは Go (その2) Advent Calendar 2016 の 17 日目の記事です。 ここ半年ほど goa というフレームワークを気に入って使っているのですが、思うところがあって goa に関連する ago という CLI を作りはじめました。この記事では、簡単な goa の説明から、今回の開発に至った経緯と、このツールで行えることについて記述します。 goa とは Go でマイクロサービスな Web API を作るためのフレームワークです。 github.com goa の DSL で design と呼ばれる定義を書いたら、 goagen というジェネレータを使ってサーバやクライアントなど各種のコードを生成することができます。毎度リンクを貼らせて頂いているのですが @ikawaha さんによる連載記事が当にオススメです。 ikawaha.hateblo.jp goa 流行ら

    ikawaha
    ikawaha 2016/12/18
    すごすぎる / design を構成する DSL の 1/3 程度は既にサポートしているので既存の Swagger 定義がある場合は goa 導入の助けになると思います。鋭意開発中なので近日中にすべての DSL がサポートされる予定です。
  • Swagger 仕様を複数ファイル出力する goa プラグイン Multiswagger を作った - tchsskのブログ

    作りました。 github.com goa とは Go でマイクロサービスな Web API を作るためのライブラリです。 github.com goa の DSL で design と呼ばれる定義を書いたら、 goagen というジェネレータを使ってサーバやクライアントなど各種のコードを生成することができます。日語だと @ikawaha さんによる連載記事が非常にわかりやすくてオススメです。 ikawaha.hateblo.jp Multiswagger とは Swagger 仕様を出力するための goagen のプラグインです。 goagen に内蔵されているデフォルトの Swagger ジェネレータと互換性がありますが、Description() という DSL が JSON のとき、そのキー毎に Swagger 仕様を出力します。 apidsl.Description(`{ "k

    ikawaha
    ikawaha 2016/10/18
    これ使うとgoaで仕様を多言語で用意できるようになるゴクリ #goadesign
  • golang: goa 勉強会で発表してきた - tchsskのブログ

    発表してきました。 connpass.com 春頃から goa を使ってきて自分なりのノウハウが溜まってきたところだったので、このような場で発表させて頂けてありがたかったです。スライドのボリューム不足を心配していたんですが 20 分というのは思ったよりも短くて、結果的には少しオーバーしてしまいました。 (すみません ...) もしまた発表する機会があったらもっとペース配分に気をつけようと思いました。 How I create a Microservice using goa - Slideck 他の方の発表も実践的な内容が多くて勉強になりました。使ったことないライブラリを知れることは勉強会に参加する意義のひとつですね。 参加した皆さま、特に主催の @ikawaha さんお疲れさまでした。 goa は簡単な修正でも pr 出すと"great!"とか"perfect!" とか全力で励ましてくれ

    golang: goa 勉強会で発表してきた - tchsskのブログ
    ikawaha
    ikawaha 2016/09/08
    APIデザインとDBのスキーマを統合的に扱う goa プラグイン gorma の貴重なレポート!
  • 1