-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomandos.txt
122 lines (96 loc) · 5.67 KB
/
comandos.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//criando projeto
dotnet new webapi - o nomeProjeto
dotnet add package Flunt -v 2.0.5
dotnet add package Microsoft.EntityFrameworkCore -v 7.0.2
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore -v 6.0.13
--dotnet add package Microsoft.AspNetCore.Mvc.Versioning -v 5.1.0 (se usando dotnet 6)
--dotnet add package Asp.Versioning.Mvc -v 6.0.0 (se usando dotnet 8)
dotnet add package Evolve -v 3.2.0
dotnet add package Serilog -v 3.1.1
dotnet add package Serilog.AspNetCore -v 7.0.0
dotnet add package Serilog.Sinks.Console -v 5.0.1
dotnet add package Serilog.Sinks.MySQL -v 4.6.0
dotnet add package Pomelo.EntityFrameworkCore.MySql --version 7.0.0
//*processos sessão 16(Hateoas)*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-criada pasta Hypermedia (onde ficam as coisas relacionadas as HATEOAS)
--criada subpasta Abstract
---ali criada uma interface chamada IResponseEnricher
---ali criada uma interface chamada ISupporstHypermedia
--criada subpasta Constants
---criada uma classe chamada HttpActionVerb
---criada uma classe chamada RelationType
---criada uma classe chamada ResponseTypeFormat
--criada subpasta Filters (com classes responsaveis para realizar a inclusão nos links nas responses)
---criada uma classe chamada HyperMediaFilterOptions
---criada uma classe chamada HyperMediaFilter
--dentro de Hypermedia, criada nova classe, chamada HyperMediaLink
--dentro de Hypermedia, criada nova classe, chamada ContentResponseEnricher
-realizado ajuste em PersonVO para suporte a ISupporstHypermedia.
-volta para pasta Hypermedia
--criada subpasta Enricher
---então é necessário adicionar um enricher para cada classe que irá usuar Hypermedia
---criada classe PersonEnricher
-realizado ajuste em Program.cs para ajustar as injeções de dependencia (observações com '//! injetando dependencias para uso de HATEOAS')
-realizado ajuste em PersonController, adicionando [TypeFilter(typeof(HyperMediaFilter))] abaixo de cada anotação http, exceto DELETE
//*processos sessão 19(Autenticação)*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer -v 6.0.25
-Na pasta db, criados dois arquivos para a Migration da tabale user e primeira carga
-Na pasta Model, criada a classe User (para uso do acesso em si, login e senha)
-Adicionada no DBContext a tabela User
-Criada uma Repository especifica para o tratamento de User (IUserRepository e UserRepository)
--Criada UserVO para trafego das informações pelo endopoint
-Criada uma pasta na raiz, com nome de Configurations para parametrizar o token
--Criada classe tokenConfiguration
--adicionado em appsettings os parametros TokenConfiguration
-Criada uma pasta Crypto em Services para criar classes referentes ao token
--criada interface ITokenService
--criada classe TokenService com as implementações
-Em Data/VO, criada a classe TokenVO para usar no trafego do token
-Em Services/Business criada a classe e interface para regras de autenticação (ILogin e Login)
-Então em Program adicionado as dependencias de login
-Criado em Controllers a classe AuthController para controle da criação e atualização do token (deixando a anotação para uso dela sem autenticação)
//query param
-Adicionada chamada findPersonByName na classe PersonBusines, PersonRepository e nao Controler.
-No controller então é usado por queryParam o recebimento das informações (que por sua vez são opcionais, e devem ser tratadas dessa forma)
/*por conta*/
criada classe Claims
ajustado em db context a validação dela e criação da chave (principalmente para uso de migrations)
adicionados comandos para criação da tabela e primeira carga para migration manual
-adicionada função em UserRepository para buscar as Claims do usuário
----trabalhando com arquivos (download e upload)
-Criada pasta UploadDir
-Em Data/VO criada class FileDetailVO
-Em services
--Criada interface IFileBusiness
---Em Implementations criada FileBusiness
-Adicionado novo controller FileController
-Adicionando Injeções a classe Program
/*pra testar, o arquivo é enviado no 'body', mudar pra 'form-data', em key escolher o tipo 'file'*/
/*para o download do arquivo, deixar a função do controller como void, pois estaremos mexendo na response já, e vamos 'lockar' ela ao escrever no body, então se fizer qualquer retorno, vai ocorrer uma exceção*/
----adicionando suporte ao docker
https://code.visualstudio.com/docs/containers/quickstart-aspnet-core
então realizar ajustes no arquivo docker-compose.yml
--tbm ajustar appsettings.json para o acesso ao banco de dados
---para subir a aplicação
docker-compose up -d --build
--pra verificar os containers
docker-compose ps
--pra ver os logs
docker logs CONTAINER_ID
quando usar docker: "MySql": "Server=db; Database=rest_with_asp_net_udemy; user=root; password=docker; SslMode=none"
quando usar local: "MySql": "Server=localhost; Database=rest_with_asp_net_udemy; user=root; password=ale123"
-pra envio pro DOckerHub
$ docker login docker.io
$ docker tag restapi:latest wackoalex/restapi:latest
$ docker tag restapi:latest wackoalex/restapi-db:latest
$ docker push wackoalex/restapi
$ docker push wackoalex/restapi-db
/*migration*/
dotnet ef migrations add 'minhaPrimeiraMigration'
dotnet ef database update --(realiza carga do migration criado pro banco de dados)
```
adicionado comando em program pra buscar o link desejado quando criar a pasta release
//! ajuste da URL usada para produção, pois não é buscado por padrão do launchsettings
para criar a pasta de release
dotnet publish "./RestAPI.csproj" -c Release
///database@123