ASP.NET 5 MVC 6:通过“接受”标头路由到操作

戴夫·纽

假设有两种方法可以通过文件或请求主体将数据发布到同一API端点。

是否可以通过同一资源的Accept标头将其路由到某个动作?

通过请求正文:

// Accept: application/json
[HttpPost]
public IActionResult PostText([FromBody]string text)
{
    ...
    return new HttpOkResult();
}

按文件:

// Accept: application/x-www-form-urlencoded
[HttpPost]
public IActionResult PostFile(IFormFile file)
{
    ...
    return new HttpOkResult();
}
Stas boyarincev

为此使用动作约束。

动作约束

namespace WebApplication
{
    public class PostDataConstraint : ActionMethodSelectorAttribute
    {
        public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action)
        {
            var httpContext = routeContext.HttpContext;
            var acceptHeader = //getting accept header from httpContext
            var currentActionName = action.DisplayName;

            if(actionName == "PostFile" and header == "application/x-www-form-urlencoded" ||
               actionName == "PostText" and header == "application/json")
            {
                return true
            }

            return false;
        }
    }
}

动作:

// Accept: application/json
[HttpPost]
[PostData]
public IActionResult PostText([FromBody]string text)
{
    ...
    return new HttpOkResult();
}

// Accept: application/x-www-form-urlencoded
[PostData]
[HttpPost]
public IActionResult PostFile(IFormFile file)
{
    ...
    return new HttpOkResult();
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

来自分类Dev

在asp.net mvc 5 GET上的路由问题

来自分类Dev

ASP.NET MVC5中的复杂路由

来自分类Dev

ASP.NET MVC 5路由可选参数

来自分类Dev

在ASP.NET MVC 5中路由可选参数

来自分类Dev

Asp.net MVC 5 MapRoute的多个路由

来自分类Dev

Asp.net MVC 5路由

来自分类Dev

Asp.net mvc 5 中的路由问题

来自分类Dev

Asp.net MVC 5 属性路由约束

来自分类Dev

asp.net mvc 5异步操作方法

来自分类Dev

MVC 5,ASP.net数据存储到神秘位置

来自分类Dev

将Angularjs集成到ASP.NET MVC 5中

来自分类Dev

asp.net 5 MVC 6模型问题

来自分类Dev

asp.net 5 mvc 6 loginUrl更改路径

来自分类Dev

在ASP.NET 5(MVC6)中请求BinaryRead

来自分类Dev

Asp.Net 5(Mvc 6)中的Custom ClaimsPrincipal

来自分类Dev

在ASP.Net 5 MVC 6中添加.css

来自分类Dev

ASP.NET 5 MVC 6中的Google OAuth

来自分类Dev

多种发布类型asp.net 5 MVC 6 API

来自分类Dev

ASP.NET 5 MVC 6中的本地化

来自分类Dev

清除MVC 6 / ASP.NET 5中的输出缓存

来自分类Dev

ASP.NET 5 / MVC 6应用程序设置

来自分类Dev

ASP.NET 5 MVC 6中的web.config

来自分类Dev

ASP.NET 5 MVC 6-登录用户

来自分类Dev

在asp.net中的Metro ui CSS 5 MVC 6

来自分类Dev

处理ASP.NET 5 MVC 6中的密码更改

来自分类Dev

asp.net身份通过链接/ URL进行身份验证asp.net mvc 5

来自分类Dev

使用ASP.Net 5的MVC 6属性路由注册路由

来自分类Dev

使用ASP.Net 5和ASP.NET MVC 6的JwtBearerAuthentication