Giter Site home page Giter Site logo

contact-api's Introduction

Contact API

Seja bem-vindo ao repositório Client API.

Tecnologias Implementadas

  • AspNet.Core 2.1.4
  • Visual Studio Code
  • MacOS
  • Fluent API
  • Microsoft EntityFrameWorkCore
  • Swashbuckle.AspNetCore.Swagger
  • Git e GitHub

Sobre o Código Fonte

O código não está completo.

O código está finalizado

Então, você pode acompanhar a evolução do projeto através dos Commits e do logbook que será criado.

Você pode conferir como foi a evolução do projeto através dos Commits e do logbook.

Resultado final

Logbook

#01 - Definição do escopo do projeto / Criação da estrutura inicial

Clonagem do repositório usando o terminal do Visual Studio Code e linha de comando git clone https://github.com/oneil-marcelo/contact-api.git

Criação das pastas Controllers, Data, Models, Repositories. A medida que for avançando, o objetivo de cada pasta será detalhado.

#02 - Criação das entidades (Modelos de dados)

A pasta Models, criada na estrutura inicial do projeto, será usada para salvar as entidades.

As entidades serão utilizadas como objetos de representação do banco de dados. Elas serão utilizadas tanto na criação do banco, como modelo para entrada e saída de dados da API.

#03 - Fluent Map / Criação do contexto para geração do banco de dados

Na pasta Data, foi criada a classe AppDataContext. Ela é responsável por criar o contexto para geração do banco e manipulação dos dados

Também foi criada uma pasta Maps, onde estão as classes responsáveis por mapear as propriedades das entidades e com isso criar as tabelas no banco de dados

Para isso foi instalado o pacote do Entity framework Core 2.1.1 => dotnet add package Microsoft.EntityFrameWork --version 2.1.1

#04 - Repository Pattern / Depency Injection

Na pasta Repositories, para cada entidade, foram criadas uma interface para assinatura dos métodos e uma classe para implementação dos metódos

O contexto para implementação dos métodos foi passado via Injeção de dependência

A classe STARTUP.CS, na raiz da aplicação, foi modificada e é a responsável por essa injeção de dependência.

Por último, foi gerado o banco de dados utilizando migrations, através da linha de comando => dotnet ef migrations add Initial.

Na linha de comando, o termo Initial é o nome da migration e pode ser usado para executar downgrade, por exemplo.

#5 - Controllers da Api / Routes / Versionamento

Assim como na pasta repositories, na pasta Controllers foi criado uma classe para cada entidade

O repositório para implementação dos métodos foi passado via Injeção de dependência. Novamente a classe Startup.cs foi responsável

Nessa etapa a classe STARTUP.CS foi alterada. Ela é responsável pela injeção de dependência nos controllers e também adicionar o middleware Mvc.

Mvc foi adicionado através do comando => dotnet add package Microsoft.AspNetCore.Mvc --version 2.1.1

As classes controllers herdam de controller e as rotas e métodos são definidos através do decorador [Route("<api/v1/[controller]")].

Os métodos HTTP também foram definidos através dos decoradores [HttpGet], [HttpPost], [HttpPut] e [HttpDelete]. Os parametros de entradas serão recebidos de duas formas:

Via url, implementando o decorador [HttpGet("{id}")] e depois sendo recuperado no método. Ex: getContactById(int id).

Recebendo no corpo da página e depois recuperando no método. Ex: AddContact([FromBody] Contact model).

Todos os métodos nos controllers retornam um http response

#6 - Documentação da Api

Para documentar a Api, foi utilizado o Swagger

Pacote foi instalado através da linha de comando dotnet add package Swashbuckle.AspNetCore.Swagger

A classe STARTUP.CS foi novamente implementada para adição e uso do pacote

contact-api's People

Contributors

oneil-marcelo avatar

Stargazers

 avatar Leandro Santos avatar Marc Ranolfi avatar

Forkers

julianohubel

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.