seabeck.pages.dev

Como criar um serviço REST simples para validar CPF?

Validar um CPF (Cadastro de Pessoas Físicas) é uma tarefa comum em sistemas web, e criar um serviço REST para isso garante escalabilidade e reutilização. Este método utiliza Python e Flask, uma combinação leve e eficaz para construir APIs rapidamente, sem complexidade desnecessária.

Pré-requisitos

Configurando o ambiente e criando o script

Primeiro, crie um arquivo chamado app.py e importe as bibliotecas necessárias. O Flask será usado para criar o endpoint REST, e implementaremos a lógica de validação do CPF diretamente no script.

from flask import Flask, request, jsonify

app = Flask(__name__)

def validar_cpf(cpf):
    # Remove caracteres não numéricos
    cpf = ''.join(filter(str.isdigit, cpf))
    
    # Verifica se o CPF tem 11 dígitos
    if len(cpf) != 11:
        return False
    
    # Verifica se todos os dígitos são iguais
    if cpf == cpf[0] * 11:
        return False
    
    # Cálculo do primeiro dígito verificador
    soma = sum(int(digit) * (10 - i) for i, digit in enumerate(cpf[:9]))
    resto = soma % 11
    digito1 = 0 if resto < 2 else 11 - resto
    
    # Cálculo do segundo dígito verificador
    soma = sum(int(digit) * (11 - i) for i, digit in enumerate(cpf[:10]))
    resto = soma % 11
    digito2 = 0 if resto < 2 else 11 - resto
    
    # Compara os dígitos calculados com os informados
    return digito1 == int(cpf[9]) and digito2 == int(cpf[10])

@app.route('/validar-cpf', methods=['POST'])
def validar():
    dados = request.get_json()
    cpf = dados.get('cpf', '')
    if not cpf:
        return jsonify({'valido': False, 'mensagem': 'CPF não informado'}), 400
    
    resultado = validar_cpf(cpf)
    return jsonify({'valido': resultado, 'cpf': cpf})

if __name__ == '__main__':
    app.run(debug=True)

Executando o serviço

Para iniciar o serviço, execute o seguinte comando no terminal, dentro do diretório onde o arquivo app.py está salvo:

python app.py

O serviço estará disponível em http://127.0.0.1:5000/validar-cpf. Você pode testá-lo enviando uma requisição POST com o CPF no corpo da requisição.

Exemplo Prático

CPF de Entrada Requisição JSON Resposta Esperada
123.456.789-09 { "cpf": "123.456.789-09" } { "valido": false, "cpf": "123.456.789-09" }
529.982.247-25 { "cpf": "529.982.247-25" } { "valido": true, "cpf": "529.982.247-25" }
111.111.111-11 { "cpf": "111.111.111-11" } { "valido": false, "cpf": "111.111.111-11" }

Conclusão

Com este serviço REST, você automatiza a validação de CPF em segundos, garantindo que apenas números corretos sejam processados em seu sistema, evitando erros manuais e aumentando a confiabilidade dos dados.