/request

A wrapper for net/http client

Primary LanguageGoGNU Affero General Public License v3.0AGPL-3.0

Go Report Card License GoDoc Build Status Coverage Status

request

A wrapper for net/http client

Example Customize url query with struct tag rq

func TestRequestQuery(t *testing.T) {
	client := &http.Client{}
	ctx := context.Background()
	rp, err := NewRequestProvider(client)
	require.NoError(t, err)
	r, err := NewRequestWithContext(
		ctx,
		http.MethodGet,
		"https://jsonplaceholder.typicode.com/posts",
		struct {
			UserId string `rq:"userId"`
		}{
			UserId: "1",
		},
		nil,
	)
	require.NoError(t, err)
	require.Equal(t, "https://jsonplaceholder.typicode.com/posts?userId=1", r.URL.String())
	res, err := rp.Do(r)
	require.NoError(t, err)
	res.Body.Close()

}

Example Customize header with struct tag rh

func TestRequestHeader(t *testing.T) {
	client := &http.Client{}
	ctx := context.Background()
	rp, err := NewRequestProvider(client)
	require.NoError(t, err)

	bs, err := json.Marshal(&struct {
		Title  string `json:"title"`
		Body   string `json:"bar"`
		UserId int    `json:"userId"`
	}{"foo", "bar", 1})
	require.NoError(t, err)

	r, err := NewRequestWithContext(
		ctx,
		http.MethodPost,
		"https://jsonplaceholder.typicode.com/posts",
		struct {
			ContentType string `rh:"Content-Type"`
		}{
			ContentType: "application/json; charset=UTF-8",
		},
		bytes.NewReader(bs),
	)
	require.NoError(t, err)
	require.Equal(t, "application/json; charset=UTF-8", r.Header.Get("Content-Type"))
	res, err := rp.Do(r)
	require.NoError(t, err)
	res.Body.Close()
}