Когда использовать FromUri, а когда нет в ASP.NET Web API - PullRequest
0 голосов
/ 05 октября 2018

У меня есть рабочий код с некоторыми маршрутами, такими как:

[Route("Companies/{id}", Name = "CompanyDetails")]
[HttpGet]
public HttpResponseMessage getCompanyDetails(string id)
{...}

[Route("Drivers/{driverIds}/Routes", Name = "Drivers")]
[HttpGet]
public HttpResponseMessage getDrivers([FromUri] List<int> driversId)
{...}

[Route("Vehicles/Signs", Name = "VehicleSigns")]
[HttpGet]
public HttpResponseMessage getVehicleSigns([FromUri]string companyId , [FromUri]List<string> vehicleIds)
{...}

Из аналогичного вопроса я узнал, что он имеет отношение к типу параметра, но я не настроился подробно, когдая должен поставить [FromUri] , а когда не . Это имеет отношение к типу параметра, количеству параметров или их комбинации?

1 Ответ

0 голосов
/ 08 октября 2018

Это связано с тем, как Web API связывает параметры для метода действия.

Если вы посмотрите на официальные документы :

Если параметрэто «простой» тип, веб-API пытается получить значение из URI.К простым типам относятся типы примитивов .NET (int, bool, double и т. Д.), А также TimeSpan, DateTime, Guid, decimal и string, а также любой тип с преобразователем типов, который может преобразовывать строки.(Подробнее о преобразователях типов позже.)

Для сложных типов Web API пытается прочитать значение из тела сообщения, используя средство форматирования медиа-типа.

Итак, для привязкисложный тип из параметров Uri:

public class GeoPoint
{
    public double Latitude { get; set; } 
    public double Longitude { get; set; }
}

public ValuesController : ApiController
{
    public HttpResponseMessage Get([FromUri] GeoPoint location) { ... }
}

А затем передайте Latitude и Longitude в строке запроса URI:

http://localhost/api/values/?Latitude=47.678558&Longitude=-122.130989

Если вы не укажете [FromUri]Атрибут web api будет искать Longitude и Latitude в теле запроса по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...