2015-09-16 3 views
0

У меня есть служба RESTful, которая возвращает подробные данные о машине по прилагаемому списку идентификаторов. GET API/машина/Как передать большое количество входных параметров службе RESTful?

http://service.com/api/machine/1,2,3,4 

До сих пор это было хорошо, так как я получаю небольшое количество машин в то время, но сейчас мне нужно, чтобы получить все машины (более 1000). Это превышает ограничение на 2000 символов для URL-адресов.

У меня есть оба варианта ниже, чтобы работать, и я ищу некоторые отзывы сообщества о том, куда идти.

Вариант 1: Разделить мой GET. Сделайте несколько вызовов с подмножеством идентификаторов. Плюсы: Я делаю так, чтобы использовать HTTP-глагол GET имеет смысл. Минусы: Если человек, новый для службы, не знает об этом лимите или не использует моего клиента, это вызовет проблемы.

Вариант 2: Добавить метод PUT/POST и включить полный список идентификаторов в теле. Плюсы: Делает 1 звонок, чтобы получить все данные. Минусы: теперь я получаю от PUT/POST.

+0

Служба отдыха в ваших руках или у вас есть шанс повлиять на службу REST? Если да, почему бы не использовать интервал: 'http: // rest/api/1-2000' – Alu

+0

Если нет, я бы использовал второй вариант – Alu

+0

Я бы сделал что-то вроде @Alu, предлагая его первый комментарий, какую-то разбивку на страницы. Какая польза от публикации результатов 2000 года? Создание POST/PUT для перечисления морских свиней не является RESTful, как могло бы. – Lucho

ответ

2

Вероятно, ваш лучший курс-оф-действие было бы что-то в линиях вариант 2, вы можете создать JSON на вашей стороне с массивом чисел, которые вы хотите отправьте в Тело сообщения. Если есть вероятность, что он все еще слишком велик, вы можете разбить его на несколько сообщений, когда вы получите ответ от одного, который вы отправите в очереди, и т. Д.

0

Другим вариантом, используемым API-интерфейсом Facebook, является создание «/ пакетного» метода POST, который может использоваться для выполнения нескольких запросов за один раз.

Так вместо того, чтобы http://service.com/api/machine/1,2,3,4,5, .... вы будете иметь пакет запросов с/машины/1/машина/2,/машина/3 и т.д.

Преимущество заключается в том, что вы держите чистые URL-адреса RESTful (не больше значений, разделенных комой), и он очень хорошо масштабируется, так как вы можете загружать столько запросов, сколько хотите.

Недостатком является то, что его немного сложнее построить.

Смотрите здесь для получения дополнительной информации - https://developers.facebook.com/docs/graph-api/making-multiple-requests

Смежные вопросы