rclient alternatives and similar packages
Based on the "Utilities" category.
Alternatively, view rclient alternatives based on common mentions on social networks and blogs.
-
项目文档
🚀Vite+Vue3+Gin拥有AI辅助的基础开发平台,支持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.
CodeRabbit: AI Code Reviews for Developers
Do you think we are missing an alternative of rclient or a related project?
Popular Comparisons
README
RClient
Getting Started
Checkout the Examples folder for some working examples. The following snippet shows RClient interacting with Github's API:
package main
import (
"github.com/zpatrick/rclient"
"log"
)
type Repository struct {
Name string `json:"name"`
}
func main() {
client := rclient.NewRestClient("https://api.github.com")
var repos []Repository
if err := client.Get("/users/zpatrick/repos", &repos); err != nil {
log.Fatal(err)
}
log.Println(repos)
}
Request Options
Requests can be configured using a Request Option.
A RequestOption
is simply a function that manipulates an http.Request
.
You can create request options like so:
setProto := func(req *http.Request) error {
req.Proto = "HTTP/1.0"
return nil
}
client.Get("/path", &v, setProto)
The built-in request options are described below.
Header / Headers
The Header()
and Headers()
options add header(s) to a *http.Request
.
// add a single header
client.Get("/path", &v, rclient.Header("name", "val"))
// add multiple headers
client.Get("/path", &v, rclient.Header("name1", "val1"), rclient.Header("name2", "val2"))
client.Get("/path", &v, rclient.Headers(map[string]string{"name1": "val1", "name2":"val2"}))
Basic Auth
The BasicAuth()
option adds basic auth to a *http.Request
.
client.Get("/path", &v, rclient.BasicAuth("user", "pass"))
Query
The Query()
options adds a query to a *http.Request
.
query := url.Values{}
query.Add("name", "John")
query.Add("age", "35")
client.Get("/path", &v, rclient.Query(query))
NOTE: This can also be accomplished by adding the raw query to the path
argument
client.Get("/path?name=John&age=35", &v)
Client Configuration
The RestClient
can be configured using the Client Options described below.
Doer
The Doer()
option sets the RequestDoer
field on the RestClient
.
This is the http.DefaultClient
by default, and it can be set to anything that satisfies the RequestDoer interface.
client, err := rclient.NewRestClient("https://api.github.com", rclient.Doer(&http.Client{}))
Request Options
The RequestOptions()
option sets the RequestOptions
field on the RestClient
.
This will manipulate each request made by the RestClient
.
This can be any of the options described in the Request Options section.
A typical use-case would be adding headers for each request.
options := []rclient.RequestOption{
rclient.Header("name", "John Doe").
rclient.Header("token", "abc123"),
}
client, err := rclient.NewRestClient("https://api.github.com", rclient.RequestOptions(options...))
Builder
The Builder()
option sets the RequestBuilder
field on the RestClient
.
This field is responsible for building *http.Request
objects.
This is the BuildJSONRequest function by default, and it can be set to any RequestBuilder function.
builder := func(method, url string, body interface{}, options ...RequestOption) (*http.Request, error){
req, _ := http.NewRequest(method, url, nil)
for _, option := range options {
if err := option(req); err != nil {
return nil, err
}
}
return nil, errors.New("I forgot to add a body to the request!")
}
client, err := rclient.NewRestClient("https://api.github.com", rclient.Builder(builder))
Reader
The Reader()
option sets the ResponseReader
field on the RestClient
.
This field is responsible for reading *http.Response
objects.
This is the ReadJSONResponse function by default, and it can be set to any ResponseReader function.
reader := func(resp *http.Response, v interface{}) error{
defer resp.Body.Close()
return json.NewDecoder(resp.Body).Decode(v)
}
client, err := rclient.NewRestClient("https://api.github.com", rclient.Reader(reader))
License
This work is published under the MIT license.
Please see the LICENSE
file for details.
*Note that all licence references and agreements mentioned in the rclient README section above
are relevant to that project's source code only.