Categorygithub.com/matsuri-tech/endpoints-go
modulepackage
0.9.0
Repository: https://github.com/matsuri-tech/endpoints-go.git
Documentation: pkg.go.dev

# README

endpoints-go

  • .endpoints.json ファイルを自動生成するための Echo ラッパー

Usage

e := echo.New()

ew := endpoints.NewEchoWrapper(e)

// バージョンごとのドメインの設定
ew.AddEnv(
    endpoints.Env{
        Version: "v1",
        Domain: endpoints.Domain{
            Local: "http://localhost:8000",
            LocalDev: "https://local-dev.hoge.com",
            Dev: "https://dev.hoge.com",
            Prod: "https://hoge.com",
    },
    endpoints.Env{
        Version: "v2",
        Domain: endpoints.Domain{
            Local: "http://localhost:8000",
            LocalDev: "https://local-dev.hoge.com",
            Dev: "https://v2.dev.hoge.com",
            Prod: "https://v2.hoge.com",
        },
    },
)

// Frontendの設定はOptionalのため、
// 何も設定しなくても動作する
ew.AddFrontends("guest", "manager")

// 以上の設定の結果、
// "v1", "guest-v1", "manager-v1",
// "v2", "guest-v2", "manager-v2"
// の6種類の.endpoints.jsonが生成される

// エンドポイントの追加
// Versionsが指定されていない場合、全てのバージョンに含まれる
// Frontendsが指定されていない場合、全てのフロントエンド向けの設定に含まれる
ew.GET("/users", userHandler.GetUsers, endpoints.Desc{
    Name: "userIndex",
    Query: "page=2&itemsPerPage=50",
    Desc: "ユーザ一覧を取得する"
})

// このエンドポイントは"v2","guest-v2","manager-v2"のみに含まれる
ew.GET("/messages", messageHandler.GetMessages, endpoints.Desc{
    Name: "messageIndex",
    Query: "page=2&itemsPerPage=50",
    Desc: "メッセージ一覧を取得する",
    Versions: endpoints.Versions{"v2"},
})

// このエンドポイントは"v1", "manager-v1", "v2", "manager-v2"のみに含まれる
ew.GET("/inquiries", inquiryHandler.GetInquiries, endpoints.Desc{
    Name: "inquiryIndex",
    Query: "",
    Desc: "問い合わせ一覧を取得する",
    Frontends: endpoints.Frontends{"manager"},
})

// このエンドポイントは"v2", "guest-v2"のみに含まれる
ew.GET("/favorites", favoriteHandler.GetFavorites, endpoints.Desc{
	Name: "favoriteIndex",
    Query: "",
    Desc: "お気に入り一覧を取得する",
    Versions: endpoints.Versions{"v2"},
    Frontends: endpoints.Frontends{"guest"},
})

// グループの作成とエンドポイントの追加
articles := ew.Group("/articles")
articles.POST("/", articleHandler.CreateArticle, endpoints.Desc{
    Name: "createArticle",
    Query: "",
    Desc: "記事を新規作成する",
})

// グループ単位でVersionsやFrontendsを指定することもできる
comments := ew.GroupWithVersionsAndFrontends(
    "/comments",
    []string{"v2"},
    []string{"manager"},
)
// このエンドポイントは"v2", "manager-v2"のみに含まれる
comments.POST("/", commentHandler.CreateComment, endpoints.Desc{
	Name: "createComment",
    Query: "",
    Desc: "コメントを新規作成する",
})

// .endpoints.jsonファイルの出力
if err := ew.Generate(".endpoints.json"); err != nil {
    log.Printf("failed to generate endpoints file: %v", err)
}

# Functions

func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、DELETEのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 Requestを受け取らないケースでは EwDELETENoRequest を使い、Responseを返さないケースでは EwDELETENoContent を使うこと。 */.
func(echo.Context, Req) errorの型をもつhandlerを受け取り、DELETEのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして204を返す。 */.
func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、DELETEのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 */.
func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、GETのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 NOTE: Go1.20時点では、メソッドがtype parameterをもてないので関数として定義されている */.
func(echo.Context, Req) (Resp, error)の型をもつhandlerを受け取り、PATCHのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして200、bodyとしてJSONで返す。 Requestを受け取らないケースでは EwPATCHNoRequest を使い、Responseを返さないケースでは EwPATCHNoContent を使うこと。 */.
func(echo.Context, Req) errorの型をもつhandlerを受け取り、PATCHのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして204を返す。 */.
func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、PATCHのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 */.
func(echo.Context, Req) (Resp, error)の型をもつhandlerを受け取り、POSTのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして200、bodyとしてJSONで返す。 Requestを受け取らないケースでは EwPOSTNoRequest を使い、Responseを返さないケースでは EwPOSTNoContent を使うこと。 */.
func(echo.Context, Req) errorの型をもつhandlerを受け取り、POSTのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして204を返す。 */.
func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、POSTのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 */.
func(echo.Context, Req) (Resp, error)の型をもつhandlerを受け取り、PUTのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして200、bodyとしてJSONで返す。 Requestを受け取らないケースでは EwPUTNoRequest を使い、Responseを返さないケースでは EwPUTNoContent を使うこと。 */.
func(echo.Context, Req) errorの型をもつhandlerを受け取り、PUTのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして204を返す。 */.
func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、PUTのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 */.
EwDELETE のGroup版 func(echo.Context, Req) (Resp, error)の型をもつhandlerを受け取り、DELETEのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして200、bodyとしてJSONで返す。 Requestを受け取らないケースでは GwDELETENoRequest を使い、Responseを返さないケースでは GwDELETENoContent を使うこと。 */.
EwDELETENoContent のGroup版 func(echo.Context, Req) errorの型をもつhandlerを受け取り、DELETEのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして204を返す。 */.
EwDELETENoRequest のGroup版 func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、DELETEのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 */.
EwGET のGroup版 func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、GETのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 NOTE: Go1.20時点では、メソッドがtype parameterをもてないので関数として定義されている */.
EwPATCH のGroup版 func(echo.Context, Req) (Resp, error)の型をもつhandlerを受け取り、PATCHのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして200、bodyとしてJSONで返す。 Requestを受け取らないケースでは GwPATCHNoRequest を使い、Responseを返さないケースでは GwPATCHNoContent を使うこと。 */.
EwPATCHNoContent のGroup版 func(echo.Context, Req) errorの型をもつhandlerを受け取り、PATCHのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして204を返す。 */.
EwPATCHNoRequest のGroup版 func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、PATCHのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 */.
EwPOST のGroup版 func(echo.Context, Req) (Resp, error)の型をもつhandlerを受け取り、POSTのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして200、bodyとしてJSONで返す。 Requestを受け取らないケースでは GwPOSTNoRequest を使い、Responseを返さないケースでは GwPOSTNoContent を使うこと。 */.
EwPOSTNoContent のGroup版 func(echo.Context, Req) errorの型をもつhandlerを受け取り、POSTのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして204を返す。 */.
EwPOSTNoRequest のGroup版 func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、POSTのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 */.
EwPUT のGroup版 func(echo.Context, Req) (Resp, error)の型をもつhandlerを受け取り、PUTのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして200、bodyとしてJSONで返す。 Requestを受け取らないケースでは GwPUTNoRequest を使い、Responseを返さないケースでは GwPUTNoContent を使うこと。 */.
EwPUTNoContent のGroup版 func(echo.Context, Req) errorの型をもつhandlerを受け取り、PUTのAPIを生やす。RequestはJSONとしてBindする。Responseはstatusとして204を返す。 */.
EwPUTNoRequest のGroup版 func(echo.Context) (Resp, error)の型をもつhandlerを受け取り、PUTのAPIを生やす。Responseはstatusとして200、bodyとしてJSONで返す。 */.
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
EchoWrapper に対応するメソッドが存在しないEchoの機能を使いたい場合に限り、 wrapされたEchoを直接呼んでよい。 ただし、それによりエンドポイントを生やす場合は、 当該エンドポイントの情報をEchoWrapper.AddAPI()により追加すること。.
No description provided by the author
GroupWrapper に対応するメソッドが存在しない*echo.Groupの機能を使いたい場合に限り、 wrapされた*echo.Groupを直接呼んでよい。 ただし、それによりエンドポイントを生やす場合は、 当該エンドポイントの情報をGroupWrapper.AddAPI()により追加すること。.
No description provided by the author

# Type aliases

No description provided by the author
No description provided by the author