问题映射新 api 控制器添加到 Razor 页面
Problem mapping new api controller added to Razor pages
我尝试将 API 控制器添加到 .Net 核心中的 Razor 页面项目。我在我的项目中添加了一个 Controllers 文件夹,单击添加项目并选择新控制器。本地主机上的页面 运行 但是当我尝试使用
测试默认 GET 时
https://localhost:44348/api/
在 Postman 中,我收到 404 错误。
生成的代码 Visual Studio 是:
namespace MyWebApp.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class APIController : ControllerBase
{
// GET: api/<APIController>
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/<APIController>/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST api/<APIController>
[HttpPost]
public void Post([FromBody] string value)
{
}
}
}
(我删除了 PUT 和 DELETE 方法)。我不确定这是如何映射的。
我假设 API 运行ning 在与应用程序其余部分相同的端口上。这是正确的吗?
在映射“api/[controller]”中,我应该为 [controller] 添加什么。我需要在某处实例化一个 APIController 对象吗?
如有任何建议,我们将不胜感激!
如果你想在 razor 页面项目中使用 API 控制器,你可以这样做:
startup.cs:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
然后如果你想去Get
,你需要像Chetan Ranpariya
说的那样使用https://localhost:44348/api/API
。
我尝试将 API 控制器添加到 .Net 核心中的 Razor 页面项目。我在我的项目中添加了一个 Controllers 文件夹,单击添加项目并选择新控制器。本地主机上的页面 运行 但是当我尝试使用
测试默认 GET 时https://localhost:44348/api/
在 Postman 中,我收到 404 错误。
生成的代码 Visual Studio 是:
namespace MyWebApp.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class APIController : ControllerBase
{
// GET: api/<APIController>
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/<APIController>/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST api/<APIController>
[HttpPost]
public void Post([FromBody] string value)
{
}
}
}
(我删除了 PUT 和 DELETE 方法)。我不确定这是如何映射的。
我假设 API 运行ning 在与应用程序其余部分相同的端口上。这是正确的吗?
在映射“api/[controller]”中,我应该为 [controller] 添加什么。我需要在某处实例化一个 APIController 对象吗?
如有任何建议,我们将不胜感激!
如果你想在 razor 页面项目中使用 API 控制器,你可以这样做:
startup.cs:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
然后如果你想去Get
,你需要像Chetan Ranpariya
说的那样使用https://localhost:44348/api/API
。