func (http *Client) BodyJSON(obj interface{}) *Client {
	data, err := json.Marshal(obj)
	if err != nil {
		log.Printf("Error converting request body to JSON: %v", err)
		return http
	}
	http.request.body = data
	return http
}
BodyJSON sets the request body by converting the object to JSON.
package client
import (
	"encoding/json"
	"fmt"
	"log"
	"net"
	"net/url"
	"strconv"
	"strings"
)
type Client struct {
	request  request
	response Response
}
func Get(path string) *Client {
	return WithMethod(path, "GET")
}
func Post(path string) *Client {
	return WithMethod(path, "POST")
}
func Put(path string) *Client {
	return WithMethod(path, "PUT")
}
func Delete(path string) *Client {
	return WithMethod(path, "DELETE")
}
func WithMethod(path string, method string) *Client {
	path = strings.ReplaceAll(path, " ", "%20")
	parsedURL, err := url.Parse(path)
	if err != nil {
		panic("Invalid URL: " + path)
	}
	http := &Client{
		request: request{
			method: method,
			url:    parsedURL,
			headers: Headers{
				"Host":            parsedURL.Hostname(),
				"Accept-Encoding": "gzip",
				"Accept":          "*/*",
			},
		},
	}
	return http
}
func (http *Client) Header(key string, value string) *Client {
	http.request.headers[key] = value
	return http
}
func (http *Client) Headers(headers Headers) *Client {
	for key, value := range headers {
		http.request.headers[key] = value
	}
	return http
}
func (http *Client) Body(raw []byte) *Client {
	http.request.body = raw
	return http
}
func (http *Client) BodyString(raw string) *Client {
	http.request.body = []byte(raw)
	return http
}