mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-12 08:42:29 +08:00
feat: add ParseResponse func in netutil/request.go
This commit is contained in:
@@ -12,6 +12,8 @@
|
|||||||
package netutil
|
package netutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sort"
|
"sort"
|
||||||
@@ -43,6 +45,15 @@ func HttpPatch(url string, params ...interface{}) (*http.Response, error) {
|
|||||||
return request(http.MethodPatch, url, params...)
|
return request(http.MethodPatch, url, params...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ParseResponse convert the http response to interface{} obj
|
||||||
|
func ParseResponse(resp *http.Response, obj interface{}) error {
|
||||||
|
if resp == nil {
|
||||||
|
return errors.New("InvalidResp")
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
return json.NewDecoder(resp.Body).Decode(obj)
|
||||||
|
}
|
||||||
|
|
||||||
// ConvertMapToQueryString convert map to sorted url query string
|
// ConvertMapToQueryString convert map to sorted url query string
|
||||||
func ConvertMapToQueryString(param map[string]interface{}) string {
|
func ConvertMapToQueryString(param map[string]interface{}) string {
|
||||||
if param == nil {
|
if param == nil {
|
||||||
|
|||||||
@@ -102,3 +102,27 @@ func TestConvertMapToQueryString(t *testing.T) {
|
|||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseResponse(t *testing.T) {
|
||||||
|
url := "http://public-api-v1.aspirantzhang.com/users"
|
||||||
|
type User struct {
|
||||||
|
Id int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
}
|
||||||
|
type UserResp struct {
|
||||||
|
Data []User `json:"data"`
|
||||||
|
}
|
||||||
|
resp, err := HttpGet(url)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
userResp := &UserResp{}
|
||||||
|
err = ParseResponse(resp, userResp)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
fmt.Println(userResp.Data)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user