Как передать несколько параметров в GET ASP.Net Web API?

Я использую .Net MVC4 Web API для (надеюсь) реализации API RESTful. Мне нужно передать несколько параметров в систему и заставить ее выполнить какое-то действие, а затем вернуть список объектов в качестве результатов. В частности, я передаю две даты и возвращаю записи, которые попадают между ними. Я также отслеживаю возвращенные записи, чтобы последующие вызовы не обрабатывались повторно в системе.

Я рассмотрел несколько подходов:

Serializing the params into one single JSON string and picking it apart in the API. http://forums.asp.net/t/1807316.aspx/1

Pass the params in the query string.
What is best way to pass multiple query parameters to a restful api?

Defining the params in the route: api/controller/date1/date2

Using a POST that inherently lets me pass an object with params.

Researching ODATA since the Web API (currently) supports it. I haven't done much with this yet so I'm not very familiar with it.

Кажется, что правильные методы REST указывают, когда данные извлекаются, вы должны использовать GET. Тем не менее, GET также должен быть нулевым (не вызывает побочных эффектов), и мне интересно, нарушает ли это моя конкретная реализация, поскольку я отмечаю записи в системе API, следовательно, я создаю побочные эффекты.

Это также привело меня к вопросу о поддержке переменных параметров. Если список входных параметров изменится, было бы утомительно пересматривать ваш маршрут для Варианта 3, если это часто случается. И что может произойти, если параметры определены во время выполнения ...

В любом случае, для моей конкретной реализации, какой выбор (если есть) кажется лучшим?

Ответы на вопрос(9)

Ваш ответ на вопрос