Estou com dificuldades para entender como que o projeto encontrou essa pasta e como que montou o caminho da API.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.