Решения REST для сложных структур данных - PullRequest
2 голосов
/ 04 октября 2010

В настоящее время я создаю API, и одно из решений, к которому мы стремимся, - это использовать REST. Ключевой проблемой является то, что передаваемые параметры представляют собой сложные типы данных, включая вложенные хэши, хэши массивов хэшей и т. Д. Философия заключается в том, что пользователь должен иметь возможность выполнять свои задачи с минимальным количеством вызовов API.

Одним из распространенных решений, которое я видел, является публикация сериализованных данных, однако для этого потребовалось бы, чтобы клиенты управляли сериализацией своих собственных данных. Наш текущий API использует XMLRPC, и клиенты могут просто использовать совместимый клиент и не беспокоиться о сериализации.

Мой вопрос к сообществу, к другим, которые должны были найти решение, чтобы решить эту проблему, что вы делали? Каковы были затраты / компромиссы? Что бы вы сделали по-другому?

Спасибо:)

Ответы [ 2 ]

1 голос
/ 01 февраля 2013

JSON и XML идеально соответствуют вашей проблеме - я бы использовал JSON, который также можно легко проанализировать в контексте браузера (обработка XML менее эффективна).Когда вы получаете, POST и т. Д. Сложные данные, они будут перемещаться в теле запроса / ответа, что просто прекрасно.Удерживайте ваши параметры URL для атрибутов поиска и публикации.

0 голосов
/ 07 октября 2010

REST - это передача представлений о состоянии ресурсов по сети. Так что не думайте о параметрах, думайте о том, каковы ваши ресурсы, и каково будет лучшее представление этих ресурсов.

И помните, что передача представления осуществляется двумя способами - клиенты могут отправлять представления желаемых состояний ресурсов для создания или обновления ресурсов. Вот для чего нужны POST и PUT.

Кроме того, не забывайте, насколько ценным для ресурса может быть предоставление / поддержка нескольких форматов представления (типы контента). Я создал много API, в которых ресурс может предоставлять представление HTML для браузеров или представление JSON или XML для программного использования.

Чтобы быть более конкретным, для типов структур данных, которые вы описываете, я бы порекомендовал JSON. Он прост, понятен, с ним легко работать на любой платформе, лаконично и напрямую поддерживает эти структуры.

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