ASP.NET Web API(.NET Core 3.1)中的端点路由问题

亨里克

下午好,

我在使用属性路由和ASP.NET核心路由中间件的Web API中遇到了端点路由方面的麻烦。

我有一个大致如下的API控制器:

public class UsersController : ControllerBase
{
    [HttpGet]
    [Route("v1/users/{id}", Name = nameof(GetUser), Order = 1)]
    public async Task<ActionResult> GetUser([FromQuery(Name = "id")] string userGuid)
    {
       // Implementation omitted.
    }

    [HttpGet]
    [Route("v1/users/me", Name = nameof(GetCurrentUser), Order = 0)]
    public async Task<ActionResult> GetCurrentUser()
    {
        // Implementation omitted.
    }
}

我正在尝试配置端点路由,以便将对'v1 / users / me'的请求路由至'GetCurrentUser()'方法,而与模板'v1 / users / {id}'匹配的请求(其中{id}! = me)路由到'GetUser()'方法。我希望可以通过将“ v1 / users / me”端点按端点顺序放置在另一个端点之前来解决此问题,但是路由中间件似乎不遵守order参数。我还尝试过在映射其余端点之前显式映射'v1 / users / me'端点,但这似乎也不起作用。

这是当前的启动配置:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
   if (env.IsDevelopment())
   {
       app.UseDeveloperExceptionPage();
   }

   app.UseHttpsRedirection();
   app.UseStaticFiles();
   app.UseResponseCompression();
   app.UseRouting();
   app.UseAuthentication();
   app.UseAuthorization();

   app.UseEndpoints(endpoints =>
   {
       // Explicit mapping of the GetCurrentUser endpoint - doesn't seem to do anything.
       // endpoints.MapControllerRoute("v1/users/me", "Users/GetCurrentUser");

       endpoints.MapControllers();
   }
}

使用属性路由可以实现这一点吗?如果可以,我缺少什么?

谢谢!

亨里克

问题出在API端点方法的注释上。

用[FromQuery]属性而不是[FromRoute]属性GetUser(string id)端点中错误地标记了该参数

预期的工作如下:

public class UsersController : ControllerBase
{
    [HttpGet]
    [Route("v1/users/{id}", Name = nameof(GetUser))]
    public async Task<ActionResult> GetUser([FromRoute(Name = "id")] string userGuid)
    {
       // Changed from [FromQuery(Name = "id")] to [FromRoute(Name = "id")]

       // Implementation omitted.
    }

    [HttpGet]
    [Route("v1/users/me", Name = nameof(GetCurrentUser))]
    public async Task<ActionResult> GetCurrentUser()
    {
        // Implementation omitted.
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确处理 ASP.Net Core 3 Web API 中的多个端点

来自分类Dev

使用Web API的ASP.Net Core路由

来自分类Dev

asp.net core 2 Web API超时问题

来自分类Dev

ASP .NET Core 3的Web安全审核问题

来自分类Dev

调试asp.net core web API

来自分类Dev

使用.NET Core Web API作为ASP.NET Web窗体应用程序的子路由

来自分类Dev

如何从单独的Docker容器中调用ASP.NET Core Web API端点

来自分类Dev

驻留在ASP.NET 4 IIS网站中的ASP.NET Core Web API

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

ASP .Net Core Web 应用程序调用 Web API

来自分类Dev

ASP.NET Core 3 Web Api发布请求不起作用

来自分类Dev

上传文件 .NET Core Web API 的问题

来自分类Dev

Asp.Net Core Web Api中的端点之间的内存缓存似乎有所不同

来自分类Dev

ASP.NET Core 1.0 Web API不返回XML

来自分类Dev

在Asp.net Core中将字典发布到Web API

来自分类常见问题

使用VSTS的ASP.NET Core Web API的CI / CD

来自分类Dev

ASP.NET Core Web Api自动帮助页面

来自分类Dev

ASP.NET Core 1.0 Web API使用camelcase

来自分类Dev

Odata ASP.NET Core 2.2 Web API分页

来自分类Dev

ASP.NET Core Web API和角色授权

来自分类Dev

从ASP .NET Core Web API方法返回完整的XML响应

来自分类Dev

ASP.NET Core Web API InvalidOperationException:无法解析服务

来自分类Dev

在本地托管Asp.net Core Web Api

来自分类Dev

C#ASP.NET Core Web API包含在何处

来自分类Dev

具有COM对象的ASP.NET CORE WEB API

来自分类Dev

ASP Net Core Web API自定义模型验证

来自分类Dev

ASP.NET Core Web API引发HTTP 500

来自分类Dev

无法从asp.net core web api获得角度响应