开始使用 React 学习 ASP.NET,但实际上我正在努力正确设置我的路由。
在 Startup.cs 文件中,我使用了我稍微修改的生成的路由模式:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action}");
});
在我的控制器中,我声明了 2 条我认为尊重模式的不同路由:
{
[ApiController]
[Route("[controller]/[action]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering",
"Scorching"
};
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index * 2),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
[HttpGet]
public IEnumerable<WeatherForecast> Test()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index * 2),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
}
}
在我的 React 应用程序中,如果我这样做:
const response = await fetch('https://localhost:5001/weatherforecast/Get');
const data = await response.json();
它工作得很好,我得到了我需要的数据。但是如果我这样做:
const response = await fetch('https://localhost:5001/weatherforecast/Test');
const data = await response.json();
我一无所获。
所以基本上,这到底有什么问题?考虑到它是完全相同的部分 [相同的控制器]/[不同的动作],“测试”路线如何不返回任何内容?
答案 0 :(得分:1)
我认为如果像这样声明上面每个方法的路由,我认为你的问题将得到解决:
[HttpGet]
[Route("/WeatherForecast/Get"]
public IEnumerable<WeatherForecast> Get()
{
....
}
[HttpGet]
[Route("/WeatherForecast/Test"]
public IEnumerable<WeatherForecast> Test()
{
....
}