【发布时间】:2016-03-27 21:44:39
【问题描述】:
我的端点通过 API-Explorer 工作,也可以在应用引擎运行时环境中工作(通过网络)
但是当我将我的 IOS 客户端(通过模拟器)指向 localhost:8080 时,我的 IOS 测试失败并且我看到到达端点(在 python 端)的空消息有效负载
这很令人沮丧,我已经尝试了好几天......
我进入了 protopc 源并添加了一个打印并得到了这个:
{
"jsonrpc": "2.0",
"method": "tstone.person.createGuy",
"id": "gtl_1",
"params": {
"resource": {
"isFemale": false,
"alias": "Alias",
"city": "Hanoi",
"id": "1",
"mobile": "+84932340799",
"privs": "privs",
"email": "hodanhcXXXgmail.com",
"last": "Danh Chuan",
"first": "Ho",
"tags": "tags"
}
},
"apiVersion": "v1"
}
所以很明显我的数据是从 IOS 客户端到达的,但是在混合的某个地方它会丢失,因此没有关于“请求”消息属性的数据到达我的代码......@987654324 @ 我还在服务器控制台中看到了这个警告:
protojson.py:267] No variant found for unrecognized field: resource
堆栈溢出意味着“变体”错误在 1.5 年前的开发服务器版本中很常见(在 localhost 上)......而我使用的是(最新)版本:
- app-engine-python 1.9.34
- 核心2016.03.22
由于它在上述(API-Explorer/app-engine 运行时)环境中工作,我推测这不是我的代码的问题,而是我的安装或本地配置的问题
所以我开始查看我的 vendored /lib 目录中的模块,看看是否有旧版本或与 dev_appserver 模块中的某些内容冲突....
我发现有几个我怀疑不应该在那里..... 似乎应用引擎应该已经在它自己的路径中包含了许多:
- apiclient
- googleapi客户端
- httplib2
- oauth2
- oauth2client(由身份工具包使用,所以这个可能没问题)
- protopigeon(ferris3 的一个部门,所以我想这也可以)
- pyasn1
- pyasn1_modules
- rsa
- simpleauth(我也将它用于身份工具包,所以没问题)
- 简单的json
- 六个
- wsgiproxy
此外,在Ferris 安装页面上,我发现了这个:
如果您是从头开始并且正在使用 webapp2 或只是使用 Cloud Endpoints:使用 Skeleton 项目
所以如果我们不使用 webapp2,我们可以做一个简单的pip install ferris,但是如果我们使用端点或 webapp2,我们必须通过 Node、Yeoman 和 Ferris 生成器来完成一些复杂的过程...... ..
为什么会增加复杂性.....有人可以向我解释一下吗?
感谢任何提示! 杜威
【问题讨论】:
-
我认为您在问 2 个不相关的问题。无论如何,关于 ferris 项目,可以选择使用 ferris 生成器来帮助您使用一个简单的预定义应用程序来展示如何使用 ferris。由于它是一个 yeoman 生成器,因此您需要 node、yeoman 等……但这是可选的。没什么复杂的。只是为了处理一些样板文件:)
-
Ferris 依赖于 google-api-python-client,而后者又需要所有这些依赖项。确实,它们似乎是应用引擎第三方 lib 文件夹的一部分,所以我想它们可以添加到
app.yaml的库部分,但很难从那里追踪版本,从以前的经验来看,我可以肯定地说,您不能依赖生产中的那些。它们不是固定不变的,并且一直在变化。我一直按照 @developers.google.com/api-client-library/python/start/… 的建议出售 google-api-python-client -
你是对的......这是两个问题......我只是不知道这些问题是否相关,但似乎不......无论如何谢谢你回应..
-
很高兴我能帮上忙。将 cmets 清理为响应。
标签: google-app-engine google-app-engine-python