📻 http
Most of the time, fetch
is used to interact with a JSON API. This library is a thin wrapper around fetch
that converts the request and response body to JSON by default.
📦 Installation
This package is hosted on npm.
npm install @bradgarropy/http
🥑 Usage
This library's API is very similar to axios. You can issue HTTP requests which are assumed to be JSON by default. It returns a Promise
with the response data.
import {http} from "@bradgarropy/http"
// get all posts
const posts = await http.get("https://jsonplaceholder.typicode.com/posts")
// get one post
const post = await http.get("https://jsonplaceholder.typicode.com/posts/1")
// get posts by user
const userPosts = await http.get("https://jsonplaceholder.typicode.com/posts", {
params: {
userId: 1,
},
})
// create a post
const newPost = await http.post("https://jsonplaceholder.typicode.com/posts", {
body: {
userId: 1,
title: "My post title",
body: "This is my post body.",
},
})
// update a post
const newPost = await http.patch(
"https://jsonplaceholder.typicode.com/posts/1",
{
body: {
userId: 1,
title: "My new post title",
body: "This is my new post body.",
},
},
)
// delete a post
const oldPost = await http.delete(
"https://jsonplaceholder.typicode.com/posts/1",
)
📖 API Reference
Every method assumes that the response coming back from the API is json
.
The request body
is converted to a string
if the Content Type is json
, or a FormData
object if the Content Type is form
. The request body
is ignored when using the GET
method.
options
All methods support an options
object. Here are the set of supported options.
Name | Required | Default | Example | Description |
---|---|---|---|---|
headers |
false |
{} |
{"authorization": "Bearer abc123"} |
Headers object, similar to fetch . |
params |
false |
{} |
{userId: 1} |
Query parameters object. |
body |
false |
{} |
{name: "Brad Garropy"} |
Body to send to the API. Define the Content-Type using type . |
type |
false |
json |
form |
Content type of the body. (json | form ) |
get(url, options)
Name | Required | Default | Example | Description |
---|---|---|---|---|
url |
true |
https://jsonplaceholder.typicode.com/posts |
Web address of the API. | |
options |
false |
{} |
{params: {userId: 1}} |
Request options. |
Perform an HTTP GET request.
// get without options
http.get("https://jsonplaceholder.typicode.com/posts")
// get with options
http.get("https://jsonplaceholder.typicode.com/posts", {
headers: {authorization: "Bearer abc123"},
params: {userId: 1},
body: {
first: "Brad",
last: "Garropy",
},
type: "json",
})
post(url, options)
Name | Required | Default | Example | Description |
---|---|---|---|---|
url |
true |
https://jsonplaceholder.typicode.com/posts |
Web address of the API. | |
options |
false |
{} |
{params: {userId: 1}} |
Request options. |
Perform an HTTP POST request.
// post without options
http.post("https://jsonplaceholder.typicode.com/posts")
// post with options
http.post("https://jsonplaceholder.typicode.com/posts", {
headers: {authorization: "Bearer abc123"},
params: {userId: 1},
body: {
first: "Brad",
last: "Garropy",
},
type: "json",
})
patch(url, options)
Name | Required | Default | Example | Description |
---|---|---|---|---|
url |
true |
https://jsonplaceholder.typicode.com/posts |
Web address of the API. | |
options |
false |
{} |
{params: {userId: 1}} |
Request options. |
Perform an HTTP PATCH request.
// patch without options
http.patch("https://jsonplaceholder.typicode.com/posts")
// patch with options
http.patch("https://jsonplaceholder.typicode.com/posts", {
headers: {authorization: "Bearer abc123"},
params: {userId: 1},
body: {
first: "Brad",
last: "Garropy",
},
type: "json",
})
delete(url, options)
Name | Required | Default | Example | Description |
---|---|---|---|---|
url |
true |
https://jsonplaceholder.typicode.com/posts |
Web address of the API. | |
options |
false |
{} |
{params: {userId: 1}} |
Request options. |
Perform an HTTP DELETE request.
// delete without options
http.delete("https://jsonplaceholder.typicode.com/posts")
// delete with options
http.delete("https://jsonplaceholder.typicode.com/posts", {
headers: {authorization: "Bearer abc123"},
params: {userId: 1},
body: {
first: "Brad",
last: "Garropy",
},
type: "json",
})
❔ Questions
🙋🏼♂️ use my ama or twitter to ask any other questions
✨ contributors
Brad Garropy |