gpt4 book ai didi

google-cloud-endpoints - 如何指定我自己的图标,以便它们显示在 Google Endpoints API 发现文档中?

转载 作者:行者123 更新时间:2023-12-04 19:52:19 27 4
gpt4 key购买 nike

我试图让图标部分包含我自己的图标,而不是通过尝试猴子补丁 ApiConfigGenerator.get_descriptor_defaults 来谷歌搜索图标。不幸的是,当发现文档完成时,这些将被忽略/丢弃。

{
"kind": "discovery#restDescription",
"etag": "...",
"discoveryVersion": "v1",
"id": "acme:v1",
"name": "acme",
"version": "v1",
"description": "Acme API",
"ownerDomain": "google.com",
"ownerName": "Google",
"icons": {
"x16": "http://www.google.com/images/icons/product/search-16.gif", # <-- acme icon url here!
"x32": "http://www.google.com/images/icons/product/search-32.gif" # <--
},
"protocol": "rest",
"baseUrl": "http://acme.appspot.com/_ah/api/acme/v1/",
"basePath": "/_ah/api/acme/v1/",
"rootUrl": "http://acme.appspot.com/_ah/api/",
"servicePath": "acme/v1/",
"batchPath": "batch",
"parameters": {

如果有的话,我该如何解决?

最佳答案

这在 google.appengine.api.endpoints 库中尚不支持,但如果您在API配置。为此,您可以猴子修补 ApiConfigGenerator 类上的 pretty_print_config_to_json 方法,或者将其子类化并猴子修补 google.appengine.ext.endpoints 中的类.api_config 模块。

例如,我们在猴子修补模块之前导入模块并保存原始类:

import json
from google.appengine.ext.endpoints import api_config
OriginalConfigGenerator = api_config.ApiConfigGenerator

然后我们定义一个子类来代替它:

class NewConfigGenerator(OriginalConfigGenerator):

然后覆盖生成 API 配置的方法:

  def pretty_print_config_to_json(self, services, hostname=None):
descriptor = super(NewConfigGenerator, self).pretty_print_config_to_json(
services, hostname=hostname)
descriptor = json.loads(descriptor)

一旦你有了配置字典,你就可以添加你自己的键并返回它:

    descriptor['icon16'] = 'YOUR-16x16-ICON-LINK'
descriptor['icon32'] = 'YOUR-32x32-ICON-LINK'
# This will be slower than overwriting __api_descriptor
# due to the json.parse/json.loads having to occur twice
# but hacking around private methods is a pain.
return json.dumps(descriptor, sort_keys=True, indent=2)

最后,确保在实际创建 API 之前对模块进行 monkey patch:

api_config.ApiConfigGenerator = NewConfigGenerator

这可以完成,例如,将这个猴子补丁放在一个类似 monkey_patch.py​​ 的文件中,然后使用

import monkey_patch

在定义 API 类的文件中。希望这会有所帮助。

关于google-cloud-endpoints - 如何指定我自己的图标,以便它们显示在 Google Endpoints API 发现文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16532502/

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