Как я могу настроить один набор API для нескольких URI? - PullRequest
0 голосов
/ 17 июля 2011

Для нашего веб-приложения я хочу разрешить разработчикам создавать учетные записи, используя наш API, при создании учетной записи URI имеет поддомен. Для этого мне нужно иметь два отдельных API, потому что URL-адрес другой.

Для создания учетной записи: api.example.com/v1

Для использования учетной записи: subdomain.example.com/api/v1/

мы используем .net mvc3, это можно сделать с помощью одного набора API и маршрутов?

1 Ответ

0 голосов
/ 17 июля 2011

Вы должны настроить маршрутизацию, чтобы добраться до соответствующего контроллера + действие, как обычно, и внутри действия (или намного лучше - с помощью 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)
    {
        ...
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...