Fetch API 在 asp .net core Web API 应用程序中找不到控制器



我试图使用fetch api从我的asp.net core web api应用程序加载数据到我的react组件。但是我很困惑,当我用例子await fetch('weatherforecast')FetchData分量中调用WeatherForecastController。它的工作原理。我在示例代码中做了一个调试,很好地达到了WeatherForecastController中的功能,但是如果我在我的项目中使用这个想法,它不起作用,我在调试中没有达到我的功能。有人可以解释在我的情况下取回api的使用?

控制器类

[ApiController]
[Route("[controller]")]
public class HelloController : ControllerBase
{
[HttpGet]
public IEnumerable<T> Get()
{
//do something
}
}

My react component

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控制器工作,路由通过调试是正确的。但如果我在另一个控制器上尝试,它不起作用。有人能解释一下吗?

我能够添加一个控制器通过添加到setupProxy并添加了一个控制器

const context = [
'/weatherforecast',
'/hello'
];

可以查看Startup.cs吗?可能你在那里设置了路由前缀。比如api。在这种情况下,你的url是/api/hello或者配置swashbuckle,它会告诉你确切的路由,并给你一个选项来尝试你的API

相关内容

最新更新