Api Doc - The SDK
Esta é a uma série de postagens que sequencial sobre a Api Doc - JS SDK.
O projeto “Api Doc - JS SDK“, é atualmente um submódulo do projeto principal, O Api Doc, trata-se de uma abstração das regras crud do sistema principal, contendo o ORM “knex” como pacote principal, onde todos os métodos encapsulam as regras do sistema “Api Doc“
Motivation
A documentação de API’s é parte fundamental do processo de construção e utilização de API’s, tornando não só a utilização da mesma menos “doloroza” mas também facilitando a sua manutenção, e essa foi a motivação central da construção desse projeto, construir uma tecnologia que facilita-se a documentação e ao mesmo tempo atendende-se os pontos básicos, como testes, etc.
Use Case
Quando comecei o projeto, pensei em não me limitar ao Framework usado no frontend, o “Vuejs” e muito menos na API Rest, o “ExpressJS”, nesse sentido, decidi abstrair as regras numa SDK, que não só eu como qualquer interessado pudesse recriar o sistema em outras plataformas com um certo grau de flexibilidade
Examples
Importando o pacote e configurando o “Knex”, muito parecido com a forma original de configuração “Knex”.
Além de configurar o “Knex”, para acesso ao banco de dados, é necessário também definir uma chave de API, todos os tokens serão gerados com base nesta chave.
import ApiDoc from "api-doc-js-doc";
const config = {
dev: {
client: "pg",
connection: {
port: process.env.PORTDB,
host: process.env.HOSTDB,
user: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DB,
},
pool: { min: 0, max: 10, idleTimeoutMillis: 500 },
},
};
export default new ApiDoc(config.dev, "TheApiSecretKey");
Importing the Instance
Após definir a configuração básica do pacote, é necessário importar a instancia e chamar os métodos
Register
import apiDoc from "../config/api";
const name = "name";
const email = "email@teste.com";
const password = "passwordTest";
// Async Await / Try Catch
async function newUserAsyncAwait() {
try {
const user = await apiDoc.userRegister(name, email, password);
console.log(user); // return new user
} catch (error) {
console.log(error.message); // return an eventual error
}
}
// or
// Then Catch
apiDoc
.userRegister(name, email, password)
.then((newUser) => {
console.log(newUser); // return new user
})
.catch((err) => {
console.log(err); // return an eventual error
});
Authentication
Para realizar uma autenticação, basta usar o método “userAuth”, passando email e senha como parâmetros, que a sdk vai retornar o objeto “usuário” e um token de JWT para válido.
import apiDoc from "../config/api";
const email = "email@teste.com";
const password = "passwordTest";
// Async Await / Try Catch
async function login() {
try {
const user = await apiDoc.userAuth(name, email, password);
console.log(user);
} catch (error) {
console.log(error.message);
}
}
// or
// Then Catch
apiDoc
.userAuth(email, password)
.then((userAndToken) => {
console.log(userAndToken); // return user/token jwt
})
.catch((err) => {
console.log(err); // return an eventual error
});