1
resposta

[Sugestão] Melhoramento na checagem dos dados enviados para API

No código proposto pelo professor, ele verifica apenas se existe o campo 'nome', mas acabei fazendo a verificação se existe o campo 'name' e 'id' (estou fazendo toda a API em inglês, mas algumas coisas de texto de aviso acabei colocando em português kk) e se não existe nenhuma propriedade além da proposta. Eu tinha a ideia de fazer algo mais dinâmico, mas por enquanto não consegui pensar em nada melhor. Segue o código dentro do controller do postLivro:

try {
        const newBook = req.body
        if(
            newBook.hasOwnProperty('name') 
            && newBook.hasOwnProperty('id') 
            && (Object.getOwnPropertyNames(newBook)).length < 3
        )
        {
            addBook(newBook)
            res.status(201)
            res.send(`Livro ${JSON.stringify(newBook)} inserido com sucesso`)
        } else {
            res.status(422)
            res.send(`Book ${JSON.stringify(newBook)} sent doesn't have the same properties from books of the application, which are: 'name' and 'id'`)
        }
    } catch (error) {
        res.status(500)
        res.send(error.message)
    }
1 resposta

Boa noite. No caso, eu acho que você não precisa verificar o "id". Como está criando um novo livro, ele ainda não terá um "id", nesse caso somente o nome já está correto. Melhorei algumas coisas e deixei um comentário para ajudá-lo.

try {
    // Aqui, você está desestruturando o seu objeto e obtendo as variáveis dele, onde você pode usá-las no código abaixo
    const { name } = req.body;

    // Verifica se a variável "name" existe e tem mais de 3 caracteres
    if (name && name.length > 3) {
        // Se a condição for verdadeira, retorna status 201 e uma mensagem com o nome do livro inserido com sucesso
        res.status(201).json({msg:`Livro ${name} inserido com sucesso.`});
    } else {
        // Se a condição for falsa, verifica se a variável "name" está vazia e retorna mensagem de erro adequada.
        // Caso contrário, retorna uma mensagem de erro informando que o nome do livro tem menos de 3 caracteres
        const retorno = (name == '') ? `O livro enviado não contém a propriedade 'name'.` : `O livro ${name} enviado tem o valor menor que 3 caracteres.`;
        // Retorna status 400 e a mensagem de erro
        res.status(400).json({msg: retorno});
    }
} catch (error) {
    // Se houver um erro, retorna status 500 e a mensagem de erro do servidor
    res.status(500).send(error.message);
}