16.12. Criando um CRUD com NodeJS e MongoDB: Documentação da API

Página 96

Uma das partes mais cruciais no desenvolvimento de uma API é a sua documentação. Uma API bem documentada é uma ferramenta poderosa para os desenvolvedores, pois facilita o seu uso e compreensão. Neste capítulo, vamos abordar como documentar uma API criada com NodeJS e MongoDB, focando em um CRUD (Create, Read, Update, Delete).

Começaremos criando uma nova rota em nossa aplicação NodeJS. Usaremos o Express, um framework popular para NodeJS, para criar nossas rotas. Nossa rota será responsável por lidar com todas as operações CRUD para um recurso específico. Usaremos o MongoDB, um banco de dados NoSQL, para armazenar nossos dados.

Primeiro, vamos definir nossa rota. Em nosso arquivo de rotas, adicionamos o seguinte código:


const express = require('express');
const router = express.Router();
const ResourceController = require('../controllers/resourceController');

router.get('/', ResourceController.getAll);
router.post('/', ResourceController.create);
router.get('/:id', ResourceController.getOne);
router.put('/:id', ResourceController.update);
router.delete('/:id', ResourceController.delete);

module.exports = router;

Este código define uma nova rota que lida com todas as operações CRUD para um recurso. O ResourceController é um controlador que nós criaremos em breve, que lidará com a lógica para cada operação.

Agora vamos criar nosso controlador. Em um novo arquivo, adicione o seguinte código:


const Resource = require('../models/resource');

exports.getAll = async (req, res) => {
    const resources = await Resource.find();
    res.json(resources);
};

exports.create = async (req, res) => {
    const newResource = new Resource(req.body);
    const resource = await newResource.save();
    res.json(resource);
};

exports.getOne = async (req, res) => {
    const resource = await Resource.findById(req.params.id);
    res.json(resource);
};

exports.update = async (req, res) => {
    const resource = await Resource.findByIdAndUpdate(req.params.id, req.body, {new: true});
    res.json(resource);
};

exports.delete = async (req, res) => {
    await Resource.findByIdAndRemove(req.params.id);
    res.json({message: 'Resource deleted'});
};

Este código define um controlador que lida com todas as operações CRUD para um recurso. Ele usa o modelo Resource que nós criaremos em breve para interagir com nosso banco de dados MongoDB.

Agora, vamos criar nosso modelo. Em um novo arquivo, adicione o seguinte código:


const mongoose = require('mongoose');

const ResourceSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    description: {
        type: String,
        required: true
    }
});

module.exports = mongoose.model('Resource', ResourceSchema);

Este código define um modelo para nossos recursos. Ele usa o Mongoose, uma biblioteca popular para MongoDB, para definir um esquema para nossos dados.

Agora que temos nossa API configurada, é hora de documentá-la. A documentação é crucial para garantir que outros desenvolvedores possam entender e usar nossa API corretamente. Existem várias ferramentas disponíveis para documentar APIs, mas uma das mais populares é o Swagger.

O Swagger é uma ferramenta de documentação de API que permite aos desenvolvedores definir a estrutura de sua API usando um formato de descrição de API. Ele gera uma interface de usuário interativa que permite aos desenvolvedores explorar e testar a API.

Para usar o Swagger, primeiro precisamos instalar o pacote swagger-ui-express:


npm install swagger-ui-express

Em seguida, podemos adicionar o seguinte código ao nosso arquivo de rotas:


const swaggerUi = require('swagger-ui-express');
const swaggerDocument = require('./swagger.json');

router.use('/api-docs', swaggerUi.serve);
router.get('/api-docs', swaggerUi.setup(swaggerDocument));

Este código serve nossa documentação Swagger em /api-docs. O arquivo swagger.json é onde definiremos a estrutura de nossa API.

Em nosso arquivo swagger.json, podemos adicionar o seguinte código:


{
    "openapi": "3.0.0",
    "info": {
        "title": "Resource API",
        "version": "1.0.0",
        "description": "API for managing resources"
    },
    "paths": {
        "/": {
            "get": {
                "summary": "Get all resources",
                "responses": {
                    "200": {
                        "description": "A list of resources"
                    }
                }
            },
            "post": {
                "summary": "Create a new resource",
                "responses": {
                    "200": {
                        "description": "The created resource"
                    }
                }
            }
        },
        "/{id}": {
            "get": {
                "summary": "Get a specific resource",
                "responses": {
                    "200": {
                        "description": "The requested resource"
                    }
                }
            },
            "put": {
                "summary": "Update a specific resource",
                "responses": {
                    "200": {
                        "description": "The updated resource"
                    }
                }
            },
            "delete": {
                "summary": "Delete a specific resource",
                "responses": {
                    "200": {
                        "description": "Confirmation of deletion"
                    }
                }
            }
        }
    }
}

Este código define a estrutura de nossa API, incluindo todas as operações CRUD que implementamos. Ele fornece uma descrição e um resumo para cada operação, bem como os possíveis códigos de resposta.

Com isso, temos uma API CRUD completa com NodeJS e MongoDB, juntamente com sua documentação. Isso facilitará muito o uso de nossa API por outros desenvolvedores.

Now answer the exercise about the content:

Qual é a importância da documentação de uma API no desenvolvimento e qual ferramenta popular é usada para documentar APIs?

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

9716.13. Criando um CRUD com NodeJS e MongoDB: Deploy da aplicação

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text