我的端点通过API-Explorer工作,也可以在app-engine运行时环境中工作(通过网络)
但是当我将我的IOS客户端(通过模拟器)指向localhost:8080时,我的IOS测试失败,我看到空消息有效负载到达端点(在python端)
这令人非常沮丧,而且我一直试图弄清楚好几天......
我进入了protorpc源并添加了一个打印并得到了这个:
{
"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客户端传来的,但是在混合的某处它会丢失,因此没有关于“请求”消息的属性的数据到达我的代码...... {{ 1}} 我还在服务器控制台中看到此警告:
all == None
堆栈溢出意味着“变体”错误在1.5年前的开发服务器版本中很常见(在localhost上)......我在(最新)版本中:
由于它适用于上述(API-Explorer / app-engine运行时)环境,我猜测它不是我的代码的问题,而是我的安装或本地配置的问题
所以我开始浏览vendored / lib目录中的模块,看看是否有旧版本或与dev_appserver模块中的内容冲突....
我找到了几个我怀疑不应该在那里..... 似乎应用引擎应该已经拥有其中的许多内容:
此外,在Ferris安装页面上,我发现了这一点:
如果你从头开始,你正在使用webapp2或只是使用 云端点:使用Skeleton项目
因此,如果我们不使用webapp2,我们可以做一个简单的protojson.py:267] No variant found for unrecognized field: resource
,但如果我们使用端点或webapp2,我们必须通过Node,Yeoman和Ferris生成器完成一些复杂的过程。 ....
为什么增加复杂性.....有人可以向我解释一下吗?
感谢任何提示!! 杜威
答案 0 :(得分:0)
关于Ferris 3项目,可以选择使用the ferris 3 generator来帮助您使用简单的预定义应用程序,该应用程序显示了如何开始使用项目的简化结构。由于它是yeoman生成器,您需要nodejs,自耕农等...
但所有这些都是可选。没什么复杂的。他们只是作为一个选项,可以跳入更大的东西,处理一些样板:)
Ferris取决于google-api-python-client,而https://cloud.google.com/appengine/docs/python/tools/libraries27又需要所有这些依赖关系。
确实,这些依赖关系似乎是app引擎的一部分。 google cloud sdk的lib&分别是第三方lib文件夹,所以我猜它们可以添加到app.yaml
的库部分。但很难从那里追踪版本,而且根据以前的经验,我可以肯定地说,你不想依赖那些生产中的版本。他们没有固定,因此一直在改变。有关绝对支持的库的列表,您可以查看https://developers.google.com/api-client-library/python/start/installation#appengine
我总是按照@ his answer from a few years back的建议出售google-api-python-client 所以你现在拥有的是正确的。
最后但并非最不重要的是,正如你正确地指出的那样,你所看到的错误似乎已经存在了很长一段时间。 Dave Fisher为{{3}}中的unrecognized field: 'resource'
错误提供了一种解决方法,该错误已证明有用。
答案 1 :(得分:0)
BTW此问题已在最新版本的Google API Objective-C客户端库中修复。是时候将一切都移植到GTLR了。是啊! :)
https://github.com/google/google-api-objectivec-client-for-rest
GTLR的其他文档: https://github.com/google/google-api-objectivec-client-for-rest/wiki http://cocoadocs.org/docsets/GoogleAPIClientForREST
警告我们使用该库遇到了一个错误,我们必须更换一些库生成的#import行。我忘记了细节,但这是一个简单的编辑。我只是讨厌修改生成的代码。
真正的痛苦是做端口的所有其他微小变化。 ;)这是一个更好的系统,也是一个很好的端口。