2016-10-25 2 views
1

Есть ли простой способ попросить клиента google api ruby ​​просто дать вам ответ HTTP-ответа на сайт, а не выполнять прекрасные, но слегка ограниченные перевод в один из их Ruby-представимых объектов?Google Api Ruby Client возвращает фактический HTTP-ответ, а не вспомогательный объект

например.

response = Gmail.client.get_user_message("me", id) 

=> #<Google::Apis::GmailV1::Message 

response = Gmail.client.list_user_messages("me")  
=> #<Google::Apis::GmailV1::ListMessagesResponse 

но

response = Gmail.client.delete_user_message("me", id) 
=>nil #successfully deleted 

Теперь, когда все хорошо и денди, за исключением того, что иногда я просто хочу знать, какой ответ будет возвращаться. то есть ответ HTTP с некоторым JSON в теле. И тогда я буду беспокоиться о том, что я с ней делать ...

я могу принять ответ и использовать

response.to_json 

, чтобы получить тело, что бы JSON вернулись (хотя я до сих пор не будет иметь код ответа, и мне нужно ЗНАТЬ, что это один из этих объектов).

Клиентская библиотека, безусловно, получает это, она просто преобразует ее в эти объекты, прежде чем она позволит мне увидеть ее. И если я не знаю, что это объект google (и не nil), я не могу запустить этот to_json последовательно ....

Любые идеи, кроме второго, предполагают, что Google собирается отправить меня обратно? (Я должен отметить, что это произошло при попытке переместить библиотеку с 0,8 api на 0,9 api, поэтому назовите меня циником, если вы хотите, но моя вера в то, что Google не нарушит эти объекты находится на низком уровне ...

ответ

0

Насколько я знаю, можно попросить сервер отправить только те поля, которые вам действительно нужны, и получить частичный ответ вместо полного ответа по умолчанию, как указано в Performance Tips.

Однако я предлагаю вам ознакомиться с документацией по конкретному API, который вы используете, чтобы узнать, поддерживается ли в данный момент поле. Для API Gmail вы можете пройти через Working with partial resources.

Вот два типа частичных запросов, которые вы можете использовать:

  • Partial response: Запрос, где необходимо указать, какие поля включить в ответ (используйте параметр fields запроса).
  • Patch: Запрос на обновление, в котором вы отправляете только те поля, которые хотите изменить (используйте HTTP-протокол PATCH).

Надеюсь, что это поможет!

+0

Hi. Спасибо за это. Проблема не в том, что сам API отправляет обратно на вызов API-интерфейса. Это то, что возвращает клиент API ruby. За кулисами он определенно собирает JSON, но он возвращает собственный объект. (Google :: Apis :: GmailV1 :: Сообщение .....), а не ответ JSON от API. как стандарт. Интересно, можно ли сказать клиенту API «Пожалуйста, пришлите мне исходный необработанный ответ?». – Carpela

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