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.
-
delve
Delve is a debugger for the Go programming language. -
项目文档
基于vite+vue3+gin搭建的开发基础平台(支持TS,JS混用),集成jwt鉴权,权限管理,动态路由,显隐可控组件,分页封装,多点登录拦截,资源权限,上传下载,代码生成器,表单生成器,chatGPT自动查表等开发必备功能。 -
hub
A command-line tool that makes git easier to use with GitHub. -
excelize
Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets -
go-torch
Stochastic flame graph profiler for Go programs. -
goreleaser
Deliver Go binaries as fast and easily as possible -
GJSON
Get JSON values quickly - JSON parser for Go -
Task
A task runner / simpler Make alternative written in Go -
usql
Universal command-line interface for SQL databases -
xlsx
(No longer maintained!) Go (golang) library for reading and writing XLSX files. -
godotenv
A Go port of Ruby's dotenv library (Loads environment variables from .env files) -
godropbox
Common libraries for writing Go services/applications. -
hystrix-go
Netflix's Hystrix latency and fault tolerance library, for Go -
go-funk
A modern Go utility library which provides helpers (map, find, contains, filter, ...) -
gorequest
GoRequest -- Simplified HTTP client ( inspired by nodejs SuperAgent ) -
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. -
mc
Simple | Fast tool to manage MinIO clusters :cloud: -
gojson
Automatically generate Go (golang) struct definitions from example JSON -
lancet
A comprehensive, efficient, and reusable util function library of go. -
mergo
Mergo: merging Go structs and maps since 2013 -
create-go-app
✨ Create a new production-ready project with backend, frontend and deploy automation by running one CLI command! -
spinner
Go (golang) package with 90 configurable terminal spinner/progress indicators. -
grequests
A Go "clone" of the great and famous Requests library -
filetype
Fast, dependency-free Go package to infer binary file types based on the magic numbers header signature -
EaseProbe
A simple, standalone, and lightweight tool that can do health/status checking, written in Go. -
mole
CLI application to create ssh tunnels focused on resiliency and user experience. -
boilr
:zap: boilerplate template manager that generates files or directories from template repositories -
sling
A Go HTTP client library for creating and sending API requests -
beaver
💨 A real time messaging system to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps. -
gitbatch
manage your git repositories in one place -
jump
Jump helps you navigate faster by learning your habits. ✌️ -
coop
Cheat sheet for some of the common concurrent flows in Go -
mimetype
A fast Golang library for media type and file extension detection, based on magic numbers -
go-underscore
Helpfully Functional Go - A useful collection of Go utilities. Designed for programmer happiness. -
gentleman
Plugin-driven, extensible HTTP client toolkit for Go -
JobRunner
Framework for performing work asynchronously, outside of the request flow -
git-time-metric
Simple, seamless, lightweight time tracking for Git -
goreq
Minimal and simple request library for Go language.
Access the most powerful time series database as a service
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.