【问题标题】:Google Api Ruby Client to return the actual HTTP response, not the helper objectGoogle Api Ruby 客户端返回实际的 HTTP 响应,而不是帮助对象
【发布时间】:2017-03-07 20:32:58
【问题描述】:

有没有一种简单的方法可以让 google api ruby​​ 客户端只给你返回原始的 HTTP 响应,而不是执行可爱但略微限制的转换为他们的 ruby​​ 可表示对象之一?

例如

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

现在这一切都很好,很花哨,只是有时我只是想知道会得到什么样的回应。即在正文中可能带有一些 JSON 的 HTTP 响应。然后我会担心我会用它做什么......

我可以接受响应并使用

response.to_json

获取将返回的 json 的主体(尽管我仍然没有响应代码,我需要首先知道它是这些对象之一)。

客户端库肯定会做到这一点,它只是在让我看到它之前将其转换为这些对象。如果我不知道它是一个 google 对象(而不是 nil),我就不能始终如一地运行那个 to_json ......

除了第二次猜测谷歌会发给我什么之外,还有什么想法吗? (我应该注意到,这是在尝试将库从处理他们的 0.8 api 移动到他们的 0.9 api 时发生的,所以如果你必须称我为愤世嫉俗者,但我相信谷歌不会对返回的那些对象进行重大更改是处于低潮...

【问题讨论】:

    标签: ruby google-api gmail-api google-api-ruby-client


    【解决方案1】:

    据我所知,可以要求服务器仅发送您真正需要的字段并获得部分响应,而不是Performance Tips 中提到的默认完整响应。

    但是,我建议您查看您正在使用的特定 API 的文档,以查看当前是否支持您要查找的字段。对于 Gmail API,您可以通过Working with partial resources

    您可以使用以下两种类型的部分请求:

    • Partial response:一个请求,您可以在其中指定要在响应中包含哪些字段(使用 fields 请求参数)。
    • Patch:一个更新请求,您只发送要更改的字段(使用 PATCH HTTP 动词)。

    希望有帮助!

    【讨论】:

    • 嗨。感谢那。问题不在于 API 本身发送回普通 API 调用的内容。这是 ruby​​ API 客户端返回的内容。在幕后,它肯定会获取 JSON,但它会返回一个专有对象。 (Google::Apis::GmailV1::Message.....) 不是来自 API 的 JSON 响应。作为标准。想知道是否可以对 API 客户端说“请将未处理的原始响应发送给我?”。
    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 2021-01-25
    • 2014-11-13
    • 2017-11-14
    • 2020-09-22
    • 2021-12-18
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多