JavaScript

Basic fetch request

    const reqUrl = "https://example.com";
  const requestBody = {
    a: 1,
  };

  const requestOptions = {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${apiResource.token}`,
      "Content-Type": "application/json",
      "Accept": "application/json",
    },
    body: JSON.stringify(requestBody),
  };

  const res = await fetch(`${reqUrl}/finish`, requestOptions)
  const resJson = await res.json()
  

Fetch request + query and body param in form urlencoded

  const token = 'b5c06574-a1e8-4ba6-8f40-62fc389ef84b'

const url = new URL('https://example.com');
url.searchParams.set('queryParam1', 'valueParam');
url.searchParams.set('queryParam2', "valueParam")

let urlencoded = new URLSearchParams();
urlencoded.append("bodyParam1", "valueParam");
urlencoded.append("bodyParam2", "valueParam");

const requestOptions = {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  body: urlencoded,
}

const res = fetch(url, requestOptions)
  

Alternative body param in form urlencoded

  const res = await fetch('https://example.com', {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/x-www-form-urlencoded',
    Accept: 'application/json',
  },
  body: new URLSearchParams({
    var1: String(data.var1),
    var2: String(data.var2),
  })
});
  

Fetch request with query param and json body

  const token = 'b5c06574-a1e8-4ba6-8f40-62fc389ef84b'

const url = new URL('https://example.com');
url.searchParams.set('queryParam1', 'valueParam');
url.searchParams.set('queryParam2', "valueParam")

const body = {
  bodyParam1: "valueParam",
  bodyParam2: "valueParam",
}

const requestOptions = {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(body),
}

const res = fetch(url, requestOptions)
  

Exponential backoff of api request

  /**
 * Retry a function n times with exponential backoff.
 * Example: retry(exampleFunction, 3, 5, 10) will do 3 retries of exampleFunction(5, 10)
 */
async function retry<T>(fn: (...args: any[]) => Promise<T>, n: number, ...args: any[]): Promise<T> {
  for (let i = 0; i < n; i++) {
    try {
      return await fn(...args);
    } catch (e) {
      console.error(e);
      const backoff = Math.floor(Math.random() * Math.pow(2, i));
      await new Promise((resolve) => setTimeout(resolve, backoff * 1000));
    }
  }
  throw new Error("Retry limit exceeded");
}
  

API Response

  function apiResponse(status: string, message: string, data: object) {
  return { status, message, data }
}
  

Python

Basic request

  import requests

token = 'b5c06574-a1e8-4ba6-8f40-62fc389ef84b'
headers = {
    "Authentication": f"Bearer {token}",
    "Content-Type": "application/json",
    "Accept": "application/json",
}
req = requests.get(f"https://example.com", headers=headers)
if req.status_code == 200:
    req_json = req.json()
    return {
        "status": "success",
        "message": "good response",
        "data": req_json,
    }
else:
    return {
        "status": "failed",
        "message": "bad response",
        "data": {"error": req.text},
    }
  

Basic request with query params and JSON body

  import requests

token = 'b5c06574-a1e8-4ba6-8f40-62fc389ef84b'
headers = {
    "Authentication": f"Bearer {token}",
    "Content-Type": "application/json",
    "Accept": "application/json",
}
body = {
    "hello": "world",
}
req = requests.post(f"https://example.com", headers=headers, json=body, params={'limit': 1})
if req.status_code == 200:
    req_json = req.json()
    return {
        "status": "success",
        "message": "good response",
        "data": req_json,
    }
else:
    return {
        "status": "success",
        "message": "good response",
        "data": {"error": req.text},
    }
  

Golang

Basic HTTP Request

Read into byte array

  resp, err := http.Get(url)
if err != nil {
  fmt.Println("Error:", err)
  os.Exit(1)
}

bs := make([]byte, 99999)
rest.Body.Read(bs)
fmt.Println(string(bs))
  

Copy direct into stdout

  resp, err := http.Get(url)
if err != nil {
  fmt.Println("Error:", err)
  os.Exit(1)
}

io.Copy(os.Stdout, resp.Body)
  
  package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

type PostData struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

func makeJSONPostRequest(url, token string, data *PostData) (string, error) {
	payload, err := json.Marshal(data)
	if err != nil {
		return "", fmt.Errorf("error preparing request body: %v", err)
	}

	req, err := http.NewRequest("POST", url, bytes.NewBuffer(payload))
	if err != nil {
		return "", fmt.Errorf("error creating new request: %v", err)
	}

	// API token authentication
	req.Header.Add("Authorization", "Bearer "+token)
	req.Header.Add("Content-Type", "application/json")
	req.Header.Add("Accept", "application/json")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		return "", fmt.Errorf("error on request: %v", err)
	}
	defer resp.Body.Close()

	// Here you can add logic to handle response

	return resp.Status, nil
}

func main() {
	data := PostData{
        Key:   "ExampleKey",
        Value: "ExampleValue",
	}

	status, err := makeJSONPostRequest("https://example.com", "your-api-token", &data)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Println("Response status:", status)
}
  

Content-Types

Common MIME Types

Common MIME types - HTTP | MDN

ExtensionDescriptionMime
.jsonJSON Formatapplication/json

.json JSON format application/json