Express on Netlify with Postage Management

RMAG news

Este projeto é uma API para gerenciamento de posts, construída utilizando Express e implementada com TypeScript. A arquitetura do projeto segue o padrão em camadas, semelhante ao framework NestJS, para facilitar a organização e manutenção do código.

acesse o repositorio

Estrutura do Projeto

project/

├── netlify/
│ └── functions/
│ └── api.ts

├── package.json
├── netlify.toml
├── tsconfig.json
├── node_modules/
├── app/
│ ├── controller/
│ │ └── post.controller.ts
│ ├── service/
│ │ └── post.service.ts
│ ├── database/
│ │ └── databaseHelper.ts
│ └── app.module.ts
├── dist/
└── index.ts

Descrição das Pastas e Arquivos

netlify/functions/api.ts: Configuração do servidor para ser utilizado com o Netlify Functions e Serverless.

app/app.module.ts: Módulo principal que registra todos os controladores e serviços.

app/controller/post.controller.ts: Controlador que trata as requisições HTTP para as rotas relacionadas aos posts.

app/service/post.service.ts: Serviço que contém a lógica de negócios para manipular os dados dos posts.

app/database/databaseHelper.ts: Helper para interação com o banco de dados Firebase.

index.ts: Ponto de entrada da aplicação, inicializa o servidor Express.

tsconfig.json: Configurações do TypeScript.

package.json: Configurações do npm e lista de dependências.

Configuração do Ambiente

Clone o repositório:

git clone https://github.com/marco0antonio0/API-Postage-Management
cd seu-repositorio

Instale as dependências:

npm install

Crie um arquivo .env na raiz do projeto com as seguintes variáveis de ambiente:

FIREBASE_API_KEY=your_firebase_api_key
FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
FIREBASE_DATABASE_URL=your_firebase_database_url
FIREBASE_PROJECT_ID=your_firebase_project_id
FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
FIREBASE_APP_ID=your_firebase_app_id
FIREBASE_MEASUREMENT_ID=your_firebase_measurement_id

Inicie o servidor de desenvolvimento:

npm run dev

Configure o Netlify:

– Crie uma conta e um novo site no Netlify.
– Configure o repositório do GitHub no Netlify.
– Adicione as variáveis de ambiente no painel de configurações do Netlify.

Utilização das Rotas

1. Recuperar todos os posts

Método: GET

URL: /api/posts

Exemplo de Resposta:

[
{
“id”: “post1”,
“title”: “First Post”,
“type”: “blog”,
“text”: “This is the content of the first post.”
},
{
“id”: “post2”,
“title”: “Second Post”,
“type”: “article”,
“text”: “This is the content of the second post.”
}
]

2. Recuperar um post específico pelo ID

Método: GET

URL: /api/posts/:id

Exemplo de Resposta:

{
“id”: “post1”,
“title”: “First Post”,
“type”: “blog”,
“text”: “This is the content of the first post.”
}

3. Criar um novo post

Método: POST

URL: /api/posts

Body (JSON):

{
“title”: “New Post”,
“type”: “blog”,
“text”: “This is the content of the new post.”
}

Exemplo de Resposta:

{
“id”: “newPostId”,
“title”: “New Post”,
“type”: “blog”,
“text”: “This is the content of the new post.”
}

4. Atualizar um post existente pelo ID

Método: PUT

URL: /api/posts/:id

Body (JSON):

{
“title”: “Updated Post Title”,
“type”: “blog”,
“text”: “This is the updated content of the post.”
}

Exemplo de Resposta:

{
“id”: “post1”,
“title”: “Updated Post Title”,
“type”: “blog”,
“text”: “This is the updated content of the post.”
}

5. Deletar um post existente pelo ID

Método: DELETE

URL: /api/posts/:id

Exemplo de Resposta:

Status Code: 204 No Content

Body: (nenhum)

Documentação Swagger

A documentação da API é gerada automaticamente pelo Swagger. Para acessar a documentação interativa da API, siga os passos abaixo:

Inicie o servidor de desenvolvimento (caso ainda não tenha feito):

npm run dev

Acesse a documentação do Swagger no navegador:

Abra seu navegador e acesse a URL http://localhost:3000/api-docs. A partir desta interface, você pode visualizar e testar todas as rotas da API.

Contribuição

Contribuições são bem-vindas! Por favor, siga os passos abaixo para contribuir:

Fork o repositório.
Crie uma nova branch (git checkout -b feature/nova-feature).
Commit suas alterações (git commit -am ‘Adiciona nova feature’).
Push para a branch (git push origin feature/nova-feature).
Crie um novo Pull Request.

Licença

Este projeto é licenciado sob a licença. Veja o arquivo LICENSE para mais detalhes.