Quando adicionamos o controller demos o nome dele de CarrinhoController, porém no momento de acessar ele através da URI utlizamos apenas carrinho. Qual a regra exatamente? É a palavra que vem antes de Controller sempre em minúsculo?
Quando adicionamos o controller demos o nome dele de CarrinhoController, porém no momento de acessar ele através da URI utlizamos apenas carrinho. Qual a regra exatamente? É a palavra que vem antes de Controller sempre em minúsculo?
Olá, Adriano!
O sufixo "Controller" é omitido por convenção, justamente para não poluir a URI. É mais elegante ter uma url "api/carrinho/remover/3" do que "api/carrinhocontroller/remover/3".
O framework reconhece que após a palavra "api" virá o nome do controller por causa da configuração da rota do arquivo WebApiConfig.cs. Por exemplo:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Aqui, temos a rota padrão, que aplicada à url "api/carrinho/remover/3" irá procurar em CarrinhoController a action (método) Remover com o parâmetro id. Caso ela seja encontrada, o framework invocará essa action.
Boa sorte e bons estudos!