c#-ASP.NET Core路由到HttpGet路由中我的名字以外的其他方法
作者:互联网
我的ASP.NET核心应用程序中有一个简单的控制器.想法是该控制器称为CreditData,而我的端点可以是例如/ api / creditdata /,然后它应该具有默认的预期API方法.
我想要两种方法:
> / api / creditdata,它应该有一个查询,例如/ api / creditdata?query = text1,text2
> / api / creditdata / value,其中应使用/ api / creditdata / text1之类的查询
我尝试将其设置如下:
[Route("api/[controller]")]
public class CreditDataController : Controller
{
private CreditDataService _creditDataService;
public CreditDataController()
{
_creditDataService = new CreditDataService();
}
// GET: api/CreditData?query=text1,text2
[HttpGet("{query}", Name = "Get")]
public List<CreditData> Get([FromQuery] string query)
{
// code
}
// GET: api/CreditData/GetByRegistration/33514322
[HttpGet("{query}", Name= "GetByRegistration")]
public CreditData GetByRegistration(string query)
{
// code
}
}
我有一个非常标准的Startup.cs文件:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true,
ReactHotModuleReplacement = true
});
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
}
但是,两种方法都不符合我的要求.我已经习惯了ASP.NET MVC 4/5的方式,但是这里的逻辑似乎有所不同.
如何设置正确的URL?
解决方法:
使用[HttpGet(“ {query}”,Name =“ Get”)],您表示URL必须类似于:
api/CreditData/query
您真正想要的只是:
// GET: api/CreditData?query=text1,text2
[HttpGet(Name = "Get")]
public List<CreditData> Get([FromQuery] string query)
在HttpGet属性中提供{query}表示它必须是路由的一部分,这不是您想要的,因此我将其删除.
您的第二个[HttpGet]用于完全相同的路由.为此,您需要:
// GET: api/CreditData/GetByRegistration/33514322
[HttpGet("GetByRegistration/{query}", Name= "GetByRegistration")]
public CreditData GetByRegistration(string query)
在这里,我添加了GetByRegistration以表明它是路由的静态部分.在这种情况下,由于我上面提到的规则,将从路由中填充您的查询参数.
注意:除非您在其他地方通过名称引用路由,否则不需要Name属性.
标签:asp-net-core,asp-net-core-mvc,asp-net-core-2-0,asp-net,c 来源: https://codeday.me/bug/20191109/2011799.html