Smerovače sú konfigurované takto:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "api",
template: "api/{action}/{id?}");
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "Home", action = "Index"});
});
Ovládač, o ktorý sa pokúšam požiadať, vyzerá takto: // GET api / values / 5
[HttpGet("{id}")]
public string Get(int id)
{
return "value" + id;
}
Keď žiadam http://localhost:54057/api/values/get, Dostanem späť „value0“.
Keď žiadam http://localhost:54057/api/values/get, Dostanem späť „value0“.
Keď žiadam http://localhost:54057/api/values/get/5, Dostanem späť 404 Not Found.
Sú moje trasy nesprávne nakonfigurované alebo prečo je to tak, že parameter „id“ nie je prenášaný z adresy URL do akcie kontrolóra?
odpovede:
0 pre odpoveď č. 1Myslím, že je potrebné zadať ovládač, a nie akciu. Vaša trasa by mala byť definovaná ako:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "api",
template: "api/{controller}/{id?}"); <-- Note the change here
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "Home", action = "Index"});
});
Dôvod, prečo ste dostávali výsledky, keď niezadaný parameter bol pravdepodobne spôsobený volaním záložnej trasy. Ak chcete vedieť, na ktorú trasu sa odvolávate, pozrite si tento článok Ladenie trasy.