Git Product home page Git Product logo

fastapitest's Introduction

FastAPI Project

Este é um projeto FastAPI com estrutura básica para um aplicativo web.

Estrutura do Projeto

  • crud: Módulos para operações CRUD no banco de dados.
  • database: Configurações e inicialização do banco de dados.
  • models: Definições de modelos de banco de dados.
  • routers: Rotas do FastAPI.
  • schemas: Esquemas Pydantic para validação de dados.
  • security: Configurações de segurança e autenticação.
  • .env: Arquivo de configuração do ambiente.
  • alembic.ini: Configurações do Alembic para migrações de banco de dados.
  • docker-compose.yaml: Configurações do Docker Compose.
  • Dockerfile: Arquivo Docker para construir a imagem do aplicativo.
  • init.sql: Script SQL de inicialização do banco de dados.
  • main.py: Arquivo principal do FastAPI.
  • requirements.txt: Dependências do Python.
  • test_main.http: Arquivo para testar requisições HTTP com VSCode REST Client.

Configuração do Ambiente

Requisitos

  • Python 3.11 ou superior
  • Docker e Docker Compose

Instalação e Execução

  1. Clone o repositório:
git clone https://github.com/GabrielSBrito17/FastAPITest.git
cd FastAPITest
  1. Execute o projeto usando o Docker Compose:
docker-compose up --build

Rotas

Criar SuperUsers

POST /users/

Parâmetros da Requisição

  • Body: Deve conter os dados do novo usuário no formato JSON.
{
  "username": "novousuario",
  "email": "[email protected]",
  "password": "senha123",
  "is_active": true,
  "is_superuser": false(alterar pra true para SuperUser)
}

Autenticação

POST /users/token

Rota para obter um token de acesso.

Exemplo de Requisição utilizando o Postman:

1. Abra o Postman.

2. Selecione o método POST.

3. Insira a URL da sua aplicação com o caminho da rota /users/token.

4. Vá para a seção Body.

5. Selecione form-data.

6. Adicione duas chaves: username e password.

7. Defina os valores para as chaves. Por exemplo, para username,
você pode inserir um nome de usuário existente no seu sistema,
e para password, insira a senha correspondente.

8. Clique em "Send" para enviar a solicitação.

Retorno da requisição semelhando a isso:

{
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0ZSIsInNjb3BlcyI6WyJpc19zdXBlcnVzZXIiXSwiZXhwIjoxNzA0ODM3MjI3fQ.hzDpIMaTQy7dnTvC_6-cwDkoeLS2roVNBnHi3cblvbQ",
    "token_type": "bearer"
}
  • Esse token servirá para conseguir acessar os dados das demais rotas.

Listar todos os usuários cadastrados(somente SuperUser tem acesso):

GET /users/all

Parâmetros da Requisição

  • Headers:
    • Authorization(Bearer Token): Token de acesso válido.

Retorno:

[
    {
        "username": "teste",
        "email": "[email protected]",
        "id": 1
    }
]

Listar um usuário cadastrado(somente SuperUser tem acesso):

GET /users/{user_id}

Parâmetros da Requisição

  • Headers:
    • Authorization(Bearer Token): Token de acesso válido.
  • Parâmetros de Caminho:
    • user_id: ID do usuário a ser recuperado.

Retorno:

    {
        "username": "teste",
        "email": "[email protected]",
        "id": 1
    }

Alterar campos de um usuário cadastrado(somente SuperUser tem acesso):

PUT /users/{user_id}

Parâmetros da Requisição

  • Headers:
    • Authorization(Bearer Token): Token de acesso válido.
  • Parâmetros de Caminho:
    • user_id: ID do usuário a ser recuperado.
  • Corpo da Requisição:
    • UserUpdate:
      • email (opcional): Novo endereço de e-mail do usuário.
      • password (opcional): Nova senha do usuário.
      • is_active (opcional): Novo status de ativação do usuário.
      • is_superuser (opcional): Novo status de superusuário do usuário.

Corpo da requisição:

{
  "username": "usuario1",
  "email": "[email protected]",
  "password":"teste",
  "is_active": true,
  "is_superuser": false
}

Deletar um usuário cadastrado(somente SuperUser tem acesso):

DELETE /users/{user_id}

Parâmetros da Requisição

  • Headers:
    • Authorization(Bearer Token): Token de acesso válido.
  • Parâmetros de Caminho:
    • user_id: ID do usuário a ser recuperado.

fastapitest's People

Contributors

gabrielsbrito17 avatar

Stargazers

Shuan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.