super-http-client-js
v2.0.0
Published
Http Client Lib with segregated interfaces developed with clean architecture concepts by Superlógica Tecnologias S.A
Downloads
3
Readme
What is Super Http Client?
Http Client lib for Node.js & TypeScript developed by Superlógica Tecnologias S.A
Getting started
To install the lib just run the command:
npm install @superlogica/super-http-client-js
Ready!
Now you can use the available interfaces and the adapter.
How Works?
The most basic possible use is to import default (adapter) and use it, as in the following example:
import SuperHttpClient from '@superlogica/super-http-client-js'
async function getAllCharacters() {
const superHttpClient = new SuperHttpClient({
baseURL: 'https://rickandmortyapi.com/api'
})
const characters = await superHttpClient.get({
url: '/character'
})
return characters
}
You can also make named imports to use interfaces, that is, abstractions instead of injecting concrete classes, as in the following example:
First of all, it is possible to create a type to define what the response will be, for example, of a get request.
// characters-dto.ts
export type Info = {
count: number
pages: number
next: string
prev?: string
}
export type Character = {
id: number
name: string
status: 'alive' | 'dead' | 'unknown'
species: string
type: string
gender: 'male' | 'female' | 'genderless'
origin: {
name: string
url: string
}
location: {
name: string
url: string
}
image: string
episode: string[]
url: string
created: Date
}
Let's create a simple use case that basically lists all characters for a given API. For this, we will use the existing abstraction in the @superlogica/super-http-client-js
lib, which is HttpGetClient
Note that when calling the get method, a parameter is passed to indicate the method's response type.
// get-all-characters-use-case.ts
import { HttpGetClient } from '@superlogica/super-http-client-js'
import { Info, Character } from './characters-dto'
export type Response = Info & Character
export class GetAllCharactersUseCase {
// abstract dependency
constructor(private readonly getCharacters: HttpGetClient) {}
async execute() {
return this.getCharacters.get<Response>({
url: '/character'
})
}
}
Finally, in index file, for example, you can create a lib instance to inject the dependency into the use case constructor
// index.ts
const superHttpClient = new SuperHttpClientAdapter({
baseURL: 'https://rickandmortyapi.com/api'
})
// inject dependency
const getAllCharactersUseCase = new GetAllCharactersUseCase(superHttpClient)
getAllCharactersUseCase.execute().then((response) => {
console.log(response)
})