Estou com dificuldades para entender como que o projeto encontrou essa pasta e como que montou o caminho da API.
Estou com dificuldades para entender como que o projeto encontrou essa pasta e como que montou o caminho da API.
Olá Diego, tudo certo?
A aula que está linkado esse post não fala sobre pasta API.
Sobre qual pasta está falando? Sobre qual parte do curso você se refere?
Tem como descrever melhor qual é a sua dificuldade para que eu possa te ajudar?
No aguardo!
Opa. Tudo bem Fabiano,
Desculpe, realmente ficou confuso, acabei colocando a questão em uma atividade que não era da minha dúvida.
Na verdade eu estava me referindo a atividade 1 da aula 2, desse mesmo curso. Link: https://cursos.alura.com.br/course/asp-net-core-web-api/task/44601
Aqui é criado uma pasta API, onde simplesmente são criados os métodos e ao compilar o sistema as rotas já estão prontas. Mas não consegui entender com que a aplicação conseguiu "entender" oque tinha nessa pasta API.
Então Diego, neste caso foi criado a pasta Api
e dentro dela um controller novo (LivrosController
), que tem um nome diferente do controller antigo (LivroController
).
O que ele fez depois disso foi adicionar o método que retorna o objeto JSON no método novo. Mas você reparou que ele mudou a rota para Livros/Recuperar/1009
?
Isso quer dizer que a rota está pegando um controller de nome Livros
e usando a action Recuperar
, com um objeto de id 1009. Meio que não importa de onde está pegando esse controller, mas foi encontrada uma classe de nome LivrosController
e isso bastou para o servidor.
É uma boa prática manter os controllers dentro da pasta que indica que tipo de classe ela é, mas não é uma regra, tanto que depois terão algumas mudanças nessa estrutura de pastas.
Mas na pasta Api
tem tudo que é necessário para a rota Livros/Recuperar/1009
funcionar. Tem um controller, tem uma action e essa action recebe um id como parâmetro e depois das verificações retorna um Json.
Então se eu chamar a pasta de "Abacaxi" ou colocar em qualquer outro lugar da estrutura. O servidor vai entender?
Neste caso funcionaria sim. O que normalmente dá problema é em relação as Views ou quando é especificado algum caminho, e no caso de controllers, eles deve ser identificados com o sufixo controller
. Mas no geral se é para usar uma classe, desde que ela esteja dentro dos assemblies, a classe será usada.
Mas na verdade, essa separação foi feita porque haverão mudanças neste projeto. E é muito interessante manter os arquivos nas pastas corretas, porque fica mais fácil para a manutenção ou evolução do projeto.