EgoRest - это http клиент, который подключается в виде пакета в проект на golang. В запросе нужно передать url
и тело запроса при необходимости, и отправьте запрос. Есть возможность как получить ответ в виде структуры http.*Response
, так и десериализовать тело ответа в структуру основываясь на заголовке Content-Type
go get -u github.com/egovorukhin/egorest
cfg := egorest.Config{
BaseUrl: egorest.BaseUrl{
Schema: "https",
Host: "localhost",
Port: 5005,
Path: "api",
},
Secure: true,
Timeout: time.Second * 30,
Buffers: &egorest.Buffers{
Write: 4096,
Read: 4096,
},
Proxy: nil,
BasicAuth: nil,
}
BaseUrl
- формирование базового адреса запроса.
Secure
- флаг от которого зависит игнорировать ли сертификат TLS.
Timeout
- таймаут запроса по истечении которого соединение закроется не зависимо от результата.
Buffers
- входной и выходной буфер соединения.
Proxy
- нужно указать структуру *url.Url
.
BasicAuth
- базовая авторизация запроса, указывается имя и пароль.
client := egorest.NewClient(cfg)
NewClient
- инициализирует клиента, который получет структуру Config
описанную выше.
request := egorest.NewRequest("api/rec/audio")
request = egorest.NewRequest("api/rec/audio", "GET")
NewRequest
- инициализирует запрос, принимается переменная path
часть пути адреса в виде строки.
Method
- необязательный аргумент, по умолчанию ставится GET
.
client := egorest.NewClient(cfg)
request := egorest.NewRequest("api/rec/audio")
resp, _ := client.Send(request)
resp, _ := client.Get(request)
resp, _ = client.Post(request)
resp, _ = client.Put(request)
resp, _ = client.Delete(request)
Send
- отправить запрос.
Get
- отправить запрос используя метод GET
.
Post
- отправить запрос используя метод POST
.
Put
- отправить запрос используя метод PUT
.
Delete
- отправить запрос используя метод DELETE
.
SetBody
- установка тела запроса.
JSON
- установка тела запроса в формате json
и установкой заголовка Content-Type: "application/json; charset=utf-8"
.
XML
- установка тела запроса в формате xml
и установкой заголовка Content-Type: "application/xml; charset=utf-8"
.
user := User{}
request.SetBody(egorest.MIMEApplicationJSON, user)
resp, _ = client.Post(request)
requset.JSON(user)
resp, _ = client.Post(request)
request.XML(user)
resp, _ = client.Post(request)
_ = client.Execute(request, &user)
_ = client.ExecuteGet(request, &user)
_ = client.ExecutePost(request, &user)
_ = client.ExecutePut(request, &user)
_ = client.ExecuteDelete(request, &user)
_ = client.Execute(request, &user, func(contentType string, data []byte, v interface{}) error {
if contentType == "application/json" {
return json.Unmarshal(data, v)
}
return nil
})
Execute
- отправрка запроса и десериализация тела ответа на основе заголовка Content-Type
.
ExecuteGet
- отправрка запроса с методом GET
и десериализация тела ответа на основе заголовка Content-Type
.
ExecutePost
- отправрка запроса с методом POST
и десериализация тела ответа на основе заголовка Content-Type
.
ExecutePut
- отправрка запроса с методом PUT
и десериализация тела ответа на основе заголовка Content-Type
.
ExecuteDelete
- отправрка запроса с методом DELETE
и десериализация тела ответа на основе заголовка Content-Type
.
В функции Execute...
есть необязательный параметр, который принимает функцию UnmarshalHandler
. Функция должна реализовать десериализацию данных не специфичных форматов, имеет вид func(contentType string, data []byte, v interface{}) error
, где contentType string
возвращает значение заголовка Content-Type
, срез байт data []byte
и структуру v interface{}
которую нужно заполнить.
httpclient := &http.Client{}
client := NewClient(cfg).SetHttpClient(httpclient)
При необходимости можно настроить *http.Client
самостоятельно и передать в egorest.Client
с помощью функции SetHttpClient(client *http.Client) *Client
и тогда запрос будет отправляться вашим клиентом.
r := egorest.NewRequest("api/images")
err := r.AddFiles("image", "/images/img1.png", "/images/img2.png")
if err != nil {
log.Fatal(err)
}
_, _ = NewClient(cfg).Post(r)
Для передачи файлов на сервер используйте функцию AddFiles
, которая принимает fieldName string
имя поля и список файлов в виде пути files ...string
. Если возникли проблемы с открытием или чтением хоть одного из файлов вернется ошибка
- Все
- Десериализовать тело ответа
- Отправить запрос с телом
- Отправить файл
- Обработчик для десериализации
Пользуйтесь на здоровье