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.

Agora responda o exercício sobre o conteúdo:

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

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Criando um CRUD com NodeJS e MongoDB: Deploy da aplicação

Próxima página do Ebook Gratuito:

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

6 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto