Skip to content

Response Handling

Fetch provides a convenient Response object for handling HTTP responses.

Basic Usage

go
response, err := fetch.Get("https://httpbin.zcorky.com/get")
if err != nil {
	panic(err)
}

// Get status code
status := response.Status

// Get response body as string
body := response.String()

// Get response body as JSON
json, err := response.JSON()

JSON Parsing

Fetch uses gjson for JSON parsing, allowing you to access nested values without unmarshaling.

go
response, err := fetch.Get("https://httpbin.zcorky.com/get")

// Access JSON values using gjson syntax
url := response.Get("url")
method := response.Get("method")

// Access nested values
value := response.Get("data.user.name")

Unmarshal to Struct

go
type User struct {
	Name  string `json:"name"`
	Email string `json:"email"`
}

response, err := fetch.Get("https://api.example.com/users/1")

var user User
err = response.UnmarshalJSON(&user)

Response Methods

Status Check

go
if response.Ok() {
	// Status code is 2xx
}

Get Status Information

go
statusCode := response.StatusCode()
statusText := response.StatusText()

Get Headers

go
contentType := response.ContentType()
location := response.Location()
contentLength := response.ContentLength()

Get Response Error

go
if !response.Ok() {
	err := response.Error()
	// err contains status code and response body
}

Example

go
response, err := fetch.Get("https://api.example.com/users/1")
if err != nil {
	panic(err)
}

if response.Ok() {
	var user User
	if err := response.UnmarshalJSON(&user); err != nil {
		panic(err)
	}
	fmt.Printf("User: %s\n", user.Name)
} else {
	fmt.Printf("Error: %v\n", response.Error())
}