requerest
v0.4.5
Published
browser library to organize http client
Downloads
13
Keywords
Readme
RequeRest
RequeRest is a library intended to build http rest client, it's made to be simple, and to compose property
:package: Installation
npm install requerest
:rocket: Simple Usage
a simple example how to build a client with requerest
// this is just an Headers object
const authorization = () => {
Authorization: 'Bearer my.bearer.token'
}
const client = new RequeRest('http://localhost')
const info = await client.get('info') // GET http://localhost/info
const authorizedClient = client.with(authorization)
const userResource = authorizedClient.path('users')
const userPostsResource = (id: string) => userResource.path(`${id}/posts`)
const users = await userResource.query({ banned: false }).get() // GET http://localhost/users?banned=false { Authorization: 'Bearer my.bearer.token' }
const foo = await userResource.get('foo') // GET http://localhost/users/foo { Authorization: 'Bearer my.bearer.token' }
const fooAvatar = await userResource.decode('image/png').get('foo/avatar') // GET http://localhost/users/foo/avatar { Authorization: 'Bearer my.bearer.token' }
const fooPosts = await userPostResource(foo.id).get() // GET http://localhosts/users/foo/posts { Authorization: 'Bearer my.bearer.token' }
:artificial_satellite: Better Usage
// a module that contains the client
const client = new RequeRest('http://localhost')
const clientBearer = client.with(() => {
Authorization: window.localStorage.getItem('bearerToken')
}) // or whatever logic is in your app
const usersResource = clientBearer.path('users')
export default {
users: {
list: (query) => usersResource.query(query).get(),
create: (user) => usersResource.post(user),
},
user: (id) => () => {
const userResource = usersResource.path(id)
return {
read: () => userResource.get(),
update: (data) => userResource.patch(data),
delete: () => userResource.delete(),
avatar: () =>
userResource
.path('avatar')
.decode('image/png')
.with({ ciao: 'mondo' })
.get(),
posts: {
// default values
list: (query = { showDeleted: true }) =>
userResource.path('posts').query(query).get(),
create: (data) => userResource.path('posts').post(post),
// and so on
},
}
},
}
await client.user('foo').posts.list()
// client usage
import client from './client'
const users = await client.users.list()
await users.create({ id: 'foo', name: 'Foo', surname: 'Bar' })
const foo = await client.user('foo')
const fooUser = await foo.read()
const fooAvatar = await foo.avatar()
const fooPosts = await foo.posts.list({ showDeleted: false })
await foo.posts.create({ title: 'hello world', body: 'Hello to everyone!' })
:cool: User Requerest in NodeJs
RequeRest is using fetch
interface, so to use in node you have
to install node-fetch.
npm i node-fetch