【问题标题】:How can I setup one set of API's across multiple URI's?如何跨多个 URI 设置一组 API?
【发布时间】:2011-07-17 05:26:00
【问题描述】:

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

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

账户使用:subdomain.example.com/api/v1/

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

【问题讨论】:

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


    【解决方案1】:

    您应该像往常一样设置路由以到达相关的控制器+动作,并在动作内部(或者更好 - 使用 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)
        {
            ...
        }
    

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 2015-08-02
      • 1970-01-01
      相关资源
      最近更新 更多