我尝试使用fetch API从asp.net core web api应用程序加载数据到react组件。但我很困惑,当我使用FetchData
组件中的示例await fetch('weatherforecast')
调用WeatherForecastController
时。我在示例代码中做了一个调试,WeatherForecastController
中的功能很好地达到了,但是如果我在我的项目中使用这个想法,它就不起作用了,我在调试中的功能没有达到。谁能解释一下fetch API在我的例子中的用法?
控制器类
[ApiController]
[Route("[controller]")]
public class HelloController : ControllerBase
{
[HttpGet]
public IEnumerable<T> Get()
{
//do something
}
}
我的react组件
const response = await fetch('Hello');
在program.cs中(我使用的是.net 6)
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json")
.Build();
builder.Services.AddDbContext<T>(options =>
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));
builder.Services.AddControllers();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new() { Title = "MY API", Version = "v1" });
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (builder.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY APP v1"));
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.UseRouting();
app.MapControllers();
app.Run();
我在setupProxy
中发现了一些有趣的东西
const { createProxyMiddleware } = require('http-proxy-middleware');
const context = [
'/weatherforecast',
'/controllerName1',
'/controllerName2',
];
module.exports = function (app) {
const appProxy = createProxyMiddleware(context, {
target: 'https://localhost:5001',
secure: false
});
app.use(appProxy);
};
默认的weatherforecast
控制器工作,通过调试,路由正确。但是如果我在另一个控制器中尝试它,它不起作用。有人能解释一下吗?
2条答案
按热度按时间cetgtptt1#
我可以通过添加到setupProxy来添加控制器,并向其添加了一个控制器。
lstz6jyr2#
你能查一下Startup.cs吗?可能是你在那里设置了路由前缀。比如
api
因此,在这种情况下,您的url将是/api/hello
或配置swashbuckle,这将告诉确切的路由,并给予您选择尝试您的API