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

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

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

  1. Сериализация параметров в одну строку JSON и разделение ее в API. http://forums.asp.net/t/1807316.aspx/1

  2. Передайте параметры в строке запроса.
    Как лучше всего передать несколько параметров запроса в restful API?

  3. Определение параметров маршрута: api/controller/date1/date2

  4. Использование POST, которое по своей сути позволяет мне передавать объект с параметрами.

  5. Изучение ODATA, так как Web API (в настоящее время) поддерживает его. Я еще не много сделал с этим, поэтому я не очень знаком с этим.

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

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

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

130
задан Community 23 May 2017 в 12:10
поделиться