Skip to content

Repository files navigation

api_gen

What's api_gen?

api_gen accelerates the development of API servers.
It generates a boilerplate for your API server in Go and clients in Go, TypeScript and so on.

Server: Go
Client: Go, TypeScript, Dart

Prerequisite

Go 1.16 or newer is required to use mock servers.

Installation

from Releases

Download binaries from Releases.

go install

Go 1.17 or newer is required.

$ go install github.com/go-generalize/api_gen/v2/cmd/api_gen@latest # latest or vX.Y.Z

Basic Usage

Prepare API definitions in Go.
The path of directories are mapped to the path of URLs.

Define types for both of requests and responses.
All types must consist of three parts: method, endpoint name, request or response.
The below example is types for POST /foo/bar/update_user.

Requests are bound with the Binder in echo.
Please refer to Binding. Responses are encoded in JSON.

// ./interfaces/foo/bar/hoge.gopackage package_name_that_you_want
typePostUpdateUserRequeststruct {
IDstring`json:"id"`
}
typePostUpdateUserResponsestruct {
Resultint`json:"result"`
}

Run the below command to generate controllers.

$ api_gen server -o ./server ./interfaces

Controllers are generated into ./interfaces/controller/foo/bar/post_update_user.go.

Then, set up echo server.

// main.gopackage main
import (
controller "path/to/generated/server""github.com/labstack/echo/v4"
)
funcmain() {
e:=echo.New()
controller.NewControllers(nil, e)
panic(e.Start(":8080"))
}

Run the below command to generate clients in TypeScript.

$ api_gen client ts -o ./client/ts ./interfaces

API clients are generated into ./client/ts/api_client.ts.

import{APIClient}from'path/to/api_client.ts';constclient=newAPIClient('very_secure_token',{},'https://example.com');client.foo.bar.postUpdateUser({id: 'id'}).then(res=>console.log(res));

For more details

server-side

ENGLISH/日本語

client-side

ENGLISH/日本語

For Developers

Development Guide

License

  • Under the MIT License
  • Copyright (c) 2020-2021 go-generalize

About

No description, website, or topics provided.

Resources

Stars

22 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages