Я знаю, что я могу использовать Url.Link()
для получения URL определенного маршрута, но как я могу получить базовый URL веб-API в контроллере веб-API?
Как получить базовый URL в контроллере Web API?
Ответ 1
Вы можете использовать свойство VirtualPathRoot
из HttpRequestContext
(request.GetRequestContext().VirtualPathRoot
)
Ответ 2
В методе действия запроса на URL "http://localhost:85458/api/ctrl/"
var baseUrl = Request.RequestUri.GetLeftPart(UriPartial.Authority) ;
это поможет вам http://localhost:85458
Ответ 3
Url.Content("~/")
работал у меня!
Ответ 4
Это то, что я использую:
Uri baseUri = new Uri(Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.PathAndQuery, String.Empty));
Затем, когда я совмещаю его с другим относительным путем, я использую следующее:
string resourceRelative = "~/images/myImage.jpg";
Uri resourceFullPath = new Uri(baseUri, VirtualPathUtility.ToAbsolute(resourceRelative));
Ответ 5
Я ввожу эту службу в свои контроллеры.
public class LinkFactory : ILinkFactory
{
private readonly HttpRequestMessage _requestMessage;
private readonly string _virtualPathRoot;
public LinkFactory(HttpRequestMessage requestMessage)
{
_requestMessage = requestMessage;
var configuration = _requestMessage.Properties[HttpPropertyKeys.HttpConfigurationKey] as HttpConfiguration;
_virtualPathRoot = configuration.VirtualPathRoot;
if (!_virtualPathRoot.EndsWith("/"))
{
_virtualPathRoot += "/";
}
}
public Uri ResolveApplicationUri(Uri relativeUri)
{
return new Uri(new Uri(new Uri(_requestMessage.RequestUri.GetLeftPart(UriPartial.Authority)), _virtualPathRoot), relativeUri);
}
}
Ответ 6
Используйте следующий фрагмент из класса помощника Url
Url.Link("DefaultApi", new { controller = "Person", id = person.Id })
Полная статья доступна здесь: http://blogs.msdn.com/b/roncain/archive/2012/07/17/using-the-asp-net-web-api-urlhelper.aspx
Это официальный способ, который не требует помощника или обходного пути. Если вы посмотрите на этот подход, это похоже на ASP.NET MVC
Ответ 7
new Uri(Request.RequestUri, RequestContext.VirtualPathRoot)
Ответ 8
Не уверен, что это дополнение Web API 2, но RequestContext
имеет свойство Url
, которое является UrlHelper
: Свойства HttpRequestContext. Он имеет методы Link
и Content
. Подробнее здесь
Ответ 9
Сначала вы получите полный URL с помощью HttpContext.Current.Request.Url.ToString();
затем замените URL вашего метода, используя Replace ("user/login", "").
Полный код будет
string host = HttpContext.Current.Request.Url.ToString().Replace("user/login", "")
Ответ 10
Основываясь на ответе Атаду, я пишу метод расширения, затем в классе контроллера вы можете получить корневой URL-адрес с помощью this.RootUrl();
public static class ControllerHelper
{
public static string RootUrl(this ApiController controller)
{
return controller.Url.Content("~/");
}
}
Ответ 11
отправьте GET
на страницу, и ответ будет ответом. Базовый URL: http://website/api/
Ответ 12
- Аутентификация
1.1 https://lalpathlabs.com/partner/api/v1/login
Это используется для аутентификации существующего пользователя на основе имени пользователя и пароля.
Запросить JSON: {"username": "", "password": ""}
Поле Примечание Тип Длина Обязательное имя пользователя Имя пользователя Строка 3-20 Да Пароль Пароль пользователя Строка 3-30 Да
Ожидаемый ответ: 200 (успех)
{"firstName": "Shishir", "lastName": "Shukla", "token": "q6anhl96p9ilikkbe2r84pfatd2dh9e2"}
400 (неверный запрос) 401 (не авторизован)
Ответ 13
От HttpRequestMessage
request.Headers.Host
Ответ 14
Al WebApi 2, просто вызывая HttpContext.Current.Request.Path;