優れたフレームワーク
Gramework Stats Dashboard とメトリクス ミドルウェアで作成された Gramework 長期テスト スタンド メトリクスのスクリーンショット
Gramework は、fasthttp メンテナーによって作成された、高速で効果的、信頼性の高い、SPA ファーストの優れた Web フレームワークです。シンプルでありながら強力な API を入手できます。最適化は内部で処理されます。機能リクエストや PR をいつでもお待ちしております。
Grameworkを使用する理由
Go >= 1.10.8 は、継続的にテストされサポートされている最も古いバージョンです。
脆弱性に遭遇した場合は、[email protected] 経由でお気軽に送信してください。
名前 | リンク/バッジ |
---|---|
ドキュメント | ゴードック |
私たちのジラ | ジラ |
ライセンスレポート | 報告 |
変更履歴 | 変更履歴 |
寄付で私たちをサポートするか、スポンサーになってください | オープンコレクティブ |
私たちのテレグラムチャット | @グラメワーク |
Gophers Slack の #gramework チャンネル | https://gophers.slack.com |
私たちのDiscordサーバー | https://discord.gg/HkW8DsD |
マスターブランチのカバレッジ | |
マスターブランチのステータス | |
開発ブランチのカバレッジ | |
開発ブランチのステータス | |
CII のベスト プラクティス | |
Grafana の Gramework 統計ダッシュボード | https://grafana.com/dashboards/3422 |
サポート連絡先 | 電子メール経由: [email protected] |
Telegram コミュニティ経由: @gramework |
このプロジェクトは素晴らしい貢献者のおかげで存在します。 [貢献する]。
支援者の皆様、ありがとうございました! 【後援者になる】
スポンサーになってこのプロジェクトを支援してください。あなたのロゴが Web サイトへのリンクとともにここに表示されます。 【スポンサーになる】
/third_party_licenses/fasthttp
および/third_party_licenses/fasthttprouter
にあります。nettls_*.go
に配置された 3 番目の autoTLS 実装は、 caddytls の統合バージョンです。単純なインポートで使用することはオプションではなく、gramework はnet/http
と互換性のないfasthttp
に基づいているためです。私がベースにしたコミットでは、caddy はApache-2.0
ライセンスを取得しています。ライセンスは/third_party_licenses/caddy
に配置されます。 @mholt により、このリポジトリ内のコードをコピーできるようになります。以下の例では、「hello, grameworld」を提供します。 Gramework はbind
フラグを登録します。これにより、Gramework がリッスンする別の IP/ポートを選択できるようになります。
package main
import (
"github.com/gramework/gramework"
)
func main () {
app := gramework . New ()
app . GET ( "/" , "hello, grameworld" )
app . ListenAndServe ()
}
bind
フラグをサポートしたくない場合は、オプションのアドレス引数をListenAndServe
に渡します。
注: 以下のすべての例では、 bind
フラグが登録されます。
バージョン: 1.1.0-rc1 以降
以下の例では、マップから{"hello":"grameworld"}
を提供します。 Gramework はbind
フラグを登録します。これにより、Gramework がリッスンする別の IP/ポートを選択できるようになります。
package main
import (
"github.com/gramework/gramework"
)
func main () {
app := gramework . New ()
app . GET ( "/" , func () map [ string ] interface {} {
return map [ string ] interface {}{
"hello" : "gramework" ,
}
})
app . ListenAndServe ()
}
バージョン: 1.1.0-rc1 以降
以下の例では、構造体から{"hello":"grameworld"}
を提供します。 Gramework はbind
フラグを登録します。これにより、Gramework がリッスンする別の IP/ポートを選択できるようになります。
package main
import (
"github.com/gramework/gramework"
)
type SomeResponse struct {
hello string
}
func main () {
app := gramework . New ()
app . GET ( "/" , func () interface {} {
return SomeResponse {
hello : "gramework" ,
}
})
app . ListenAndServe ()
}
以下の例では、 ./files
から静的ファイルを提供します。
package main
import (
"github.com/gramework/gramework"
)
func main () {
app := gramework . New ()
app . GET ( "/*any" , app . ServeDir ( "./files" ))
app . ListenAndServe ()
}
以下の例では、バイト スライスを提供します。
package main
import (
"fmt"
"os"
"time"
"github.com/gramework/gramework"
)
type SomeData struct {
Name string
Age uint8
}
func main () {
app := gramework . New ()
d := SomeData {
Name : "Grame" ,
Age : 20 ,
}
// service-wide CORS. you can also instead of using middleware
// call ctx.CORS() manually
app . Use ( app . CORSMiddleware ())
app . GET ( "/someJSON" , func ( ctx * gramework. Context ) {
// send json, no metter if user asked for json, xml or anything else.
if err := ctx . JSON ( d ); err != nil {
// you can return err instead of manual checks and Err500() call.
// See next handler for example.
ctx . Err500 ()
}
})
app . GET ( "/simpleJSON" , func ( ctx * gramework. Context ) error {
return ctx . JSON ( d )
})
app . GET ( "/someData" , func ( ctx * gramework. Context ) error {
// send data in one of supported encodings user asked for.
// Now we support json, xml and csv. More coming soon.
sentType , err := ctx . Encode ( d )
if err != nil {
ctx . Logger . WithError ( err ). Error ( "could not process request" )
return err
}
ctx . Logger . WithField ( "sentType" , sentType ). Debug ( "some request-related message" )
return nil
})
// you can omit context if you want, return `interface{}`, `error` or both.
app . GET ( "/simplestJSON" , func () interface {} {
return d
})
// you can also use one of built-in types as a handler, we got you covered too
app . GET ( "/hostnameJSON" , fmt . Sprintf ( `{"hostname": %q}` , os . Hostname ()))
wait := make ( chan struct {})
go func () {
time . Sleep ( 10 * time . Minute )
app . Shutdown ()
wait <- struct {}{}
}()
app . ListenAndServe ()
// allow Shutdown() to stop the app properly.
// ListenAndServe will return before Shutdown(), so we should wait.
<- wait
}
この例では、ハンドラーを書き換えずに fasthttp から Gramework に移行する方法を示します。
package main
import (
"github.com/gramework/gramework"
"github.com/valyala/fasthttp"
)
func main () {
app := gramework . New ()
app . GET ( "/someJSON" , func ( ctx * fasthttp. RequestCtx ) {
ctx . WriteString ( "another data" )
})
app . ListenAndServe ()
}