gpt4 book ai didi

ruby - google-api-ruby-client:请求序列化导致空请求

转载 作者:行者123 更新时间:2023-12-04 01:02:26 29 4
gpt4 key购买 nike

replacement_requests = [
Google::Apis::DocsV1::ReplaceAllTextRequest.new(contains_text: "{{name}}", replace_text: "Joe"),
Google::Apis::DocsV1::ReplaceAllTextRequest.new(contains_text: "{{age}}", replace_text: "34"),
Google::Apis::DocsV1::ReplaceAllTextRequest.new(contains_text: "{{address}}", replace_text: "Westwood"),
]

batch_request = Google::Apis::DocsV1::BatchUpdateDocumentRequest.new(requests: replacement_requests)

鉴于上述代码,当我将此 BatcUpdateDocumentRequest 实例传递到我的 service.batch_update_document 函数时,我收到一个 400 错误请求。这似乎与批处理请求的序列化方式有关。

为了说明,如果我们调用 batch_request.to_json,我们会收到以下内容:

"{\"requests\":[{},{},{}]}"

这告诉我在序列化过程中出了点问题,但是我的代码看起来相当规范。

对于为什么我的请求无法序列化有什么想法吗?

最佳答案

  • 您想使用带有 ruby​​ 的 google-api-client 来使用 replaceAllText 请求。
  • 您已经能够使用 Google Docs API 为 Google Document 设置和获取值。

如果我的理解是正确的,这个修改怎么样?在您的脚本中,创建的请求正文是 {"requests":[{},{},{}]} .由此,错误发生。请按如下方式修改脚本。

修改点:

  • 使用Google::Apis::DocsV1::SubstringMatchCriteria对于 contains_textGoogle::Apis::DocsV1::ReplaceAllTextRequest
  • 使用Google::Apis::DocsV1::Request对于 Google::Apis::DocsV1::ReplaceAllTextRequest .

通过上述修改,创建了请求体。

修改后的脚本:

text1 = Google::Apis::DocsV1::SubstringMatchCriteria.new(text: "{{name}}")
text2 = Google::Apis::DocsV1::SubstringMatchCriteria.new(text: "{{age}}")
text3 = Google::Apis::DocsV1::SubstringMatchCriteria.new(text: "{{address}}")

req1 = Google::Apis::DocsV1::ReplaceAllTextRequest.new(contains_text: text1 , replace_text: "Joe")
req2 = Google::Apis::DocsV1::ReplaceAllTextRequest.new(contains_text: text2, replace_text: "34")
req3 = Google::Apis::DocsV1::ReplaceAllTextRequest.new(contains_text: text3, replace_text: "Westwood")

replacement_requests = [
Google::Apis::DocsV1::Request.new(replace_all_text: req1),
Google::Apis::DocsV1::Request.new(replace_all_text: req2),
Google::Apis::DocsV1::Request.new(replace_all_text: req3)
]

batch_request = Google::Apis::DocsV1::BatchUpdateDocumentRequest.new(requests: replacement_requests)

# result = service.batch_update_document(document_id, batch_request) # When you request with "batch_request", you can use this.

请求正文:

运行上述脚本时,将创建以下请求正文。

{"requests":[
{"replaceAllText":{"containsText":{"text":"{{name}}"},"replaceText":"Joe"}},
{"replaceAllText":{"containsText":{"text":"{{age}}"},"replaceText":"34"}},
{"replaceAllText":{"containsText":{"text":"{{address}}"},"replaceText":"Westwood"}}
]}

备注:

  • 出现授权相关错误时,请确认授权范围及是否启用了Docs API。

引用资料:

如果这不起作用,我深表歉意。

关于ruby - google-api-ruby-client:请求序列化导致空请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019216/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com