如何在多个URI中设置一组API?

时间:2011-07-17 05:26:01

标签: asp.net-mvc-3 rest routes

对于我们的网络应用,我想让开发人员使用我们的api创建帐户,当创建帐户时,URI有一个子域。要做到这一点,我必须有两个单独的API,因为URL是不同的。

对于帐户创建:api.example.com/v1

对于帐户使用:subdomain.example.com/api/v1 /

我们正在使用.net mvc3,这可以通过一组api和路由来完成吗?

1 个答案:

答案 0 :(得分:0)

您应该像往常一样设置路由以进入相关的控制器+操作,并在操作内部(或更好 - 使用ActionFilter),检查子域并设置确定用户身份的相应代码,进一步处理。

过滤器的示例如下:

    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class SubdomainFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        int? userID = null;

        Uri uri = filterContext.HttpContext.Request.Url;
        if (uri != null)
        {
            string domain = uri.Host;
            // do whatever you need analyzing the 'domain' variable... like getting the user id according to the subdomain. Let's say we discoveered that the user id is 1.
            userID = 1;
        }

        if (filterContext.ActionParameters.ContainsKey("Subdomain"))
            filterContext.ActionParameters["SubdomainUser"] = userID;

        base.OnActionExecuting(filterContext);
    }
}

然后你的行动将是:

        [SubdomainFilter]
    public virtual ActionResult GetUserName(int? userID)
    {
        ...
    }