Description
ADK - Golang API Development Kit, has a set of utility libs to help write simple APIs and manage errors and responses better.
ADK - Golang API Development Kit alternatives and similar packages
Based on the "Utilities" category.
Alternatively, view adk alternatives based on common mentions on social networks and blogs.
-
项目文档
🚀Vite+Vue3+Gin的开发基础平台,支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下载、代码生成器、表单生成器和可配置的导入导出等开发必备功能。 -
excelize
Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets -
Kopia
Cross-platform backup tool for Windows, macOS & Linux with fast, incremental backups, client-side end-to-end encryption, compression and data deduplication. CLI and GUI included. -
goreporter
A Golang tool that does static analysis, unit testing, code review and generate code quality report. -
create-go-app
✨ A complete and self-contained solution for developers of any qualification to create a production-ready project with backend (Go), frontend (JavaScript, TypeScript) and deploy automation (Ansible, Docker) by running only one CLI command. -
EaseProbe
A simple, standalone, and lightweight tool that can do health/status checking, written in Go. -
filetype
Fast, dependency-free Go package to infer binary file types based on the magic numbers header signature -
boilr
:zap: boilerplate template manager that generates files or directories from template repositories -
beaver
💨 A real time messaging system to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps. -
go-underscore
Helpfully Functional Go - A useful collection of Go utilities. Designed for programmer happiness.
WorkOS - The modern identity platform for B2B SaaS
Do you think we are missing an alternative of ADK - Golang API Development Kit or a related project?
Popular Comparisons
README
ADK - Golang API Development Kit
GoDoc Reference:
Common utilities to write simple apis in golang.
- Custom API Handlers
- Custom API Request(JSON) Decoders
- Custom API URL Query-params Decoders using gorrila schema.
- App Errors
- Response Writers
Ex: Conventional way of writing api
package main
import (
"net/http"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
)
func main() {
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Post("/user", CreateUserHandler)
http.ListenAndServe(":3000", r)
}
// CreateUserHandler creates a new users
func CreateUserHandler(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
reqBts, err := ioutil.ReadAll(r.Body)
if err != nil {
w.Header().Add("Content-Type", "application/json")
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(`{"error": "Couldn't read request body"}`))
return
}
var createReq createUserReq
jErr := json.Unmarshal(reqBts, &createReq)
if jErr != nil {
w.Header().Add("Content-Type", "application/json")
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(`{"error": "invalid request body"}`))
return
}
if err := validateCreateUserReq(&createReq); err != nil {
w.Header().Add("Content-Type", "application/json")
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(`{"error": "invalid request body"}`))
return
}
if err := store.CreateUser(&createReq); err != nil {
w.Header().Add("Content-Type", "application/json")
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(`{"error": "invalid request body"}`))
return
}
// respond to the client
w.Header().Add("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"message": "user created successfully", "id": 123}`))
}
After using custom handlers and ADK
package main
import (
"net/http"
"github.com/manigandand/adk/api"
"github.com/manigandand/adk/errors"
"github.com/manigandand/adk/middleware"
"github.com/manigandand/adk/respond"
"github.com/go-chi/chi/v5"
)
func main() {
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
r.Method(http.MethodPost, "/user", api.Handler(CreateUserHandler))
http.ListenAndServe(":3000", r)
}
type createUserReq struct {
Email string `json:"email"`
Name string `json:"name"`
}
func (c *createUserReq) Validate() *errors.AppError {
if c.Email == "" {
return errors.KeyRequired("email")
}
return nil
}
// CreateUserHandler creates a new users
func CreateUserHandler(w http.ResponseWriter, r *http.Request) *errors.AppError{
ctx := r.Context()
var createReq createUserReq
if err := api.Decode(r, &createReq); err != nil {
return err
}
if err := store.CreateUser(&createReq); err != nil {
return err
}
// respond to the client
return respond.OK(w, map[string]interface{}{
"message": "user created successfully",
"id": 123,
})
}
NOTE: Decoder currently will work on only on the
"application/json"
body.
*Note that all licence references and agreements mentioned in the ADK - Golang API Development Kit README section above
are relevant to that project's source code only.