[英]testing app engine endpoints at localhost (IOS & Python)
我的端点通过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客户端到达的,但是在混合中的某个地方它丢失了,因此在到达我的代码的“请求”消息的属性上没有数据…… all == None
还可以在服务器控制台中看到此警告:
protojson.py:267] No variant found for unrecognized field: resource
堆栈溢出表示“可变”错误在1.5年前的开发服务器版本中很常见(在localhost上)……而我正在使用(最新)版本:
由于它可以在上述(API-Explorer / app-engine运行时)环境中运行,因此我推测这不是我的代码问题,而是我的安装或本地配置问题
因此,我开始浏览供应商提供的/ lib目录中的模块,以查看是否有旧版本或与dev_appserver模块中的内容冲突。...
我发现有几个我怀疑应该不存在的地方.....看来,应用程序引擎应该已经在自己的路径中包含了许多:
此外,在Ferris安装页面上,我发现了这一点:
如果您是从头开始,并且正在使用webapp2或仅使用Cloud Endpoints,请使用Skeleton项目
因此,如果我们不使用webapp2,则可以进行简单的pip install ferris
,但是如果我们使用端点或webapp2,则必须通过Node,Yeoman和Ferris生成器进行一些复杂的过程。
为什么增加的复杂性.....有人可以向我解释一下吗?
并感谢您的提示!! 杜威
关于Ferris 3项目,可以选择使用ferris 3生成器来帮助您使用一个简单的预定义应用程序,该应用程序显示了如何开始该项目的简化结构。 由于它是yeoman生成器,因此您需要nodejs ,yeoman等。
但是所有这些都是可选的 。 没什么复杂的。 他们只是一个选择,可以跳入更大的领域,处理一些样板:)
Ferris依赖于google-api-python-client ,而后者又需要所有这些依赖项。
的确,这些依赖关系似乎分别作为应用程序引擎和Google Cloud SDK的lib和第三方lib文件夹的一部分出现,因此我想可以将它们添加到app.yaml
“库”部分中。 但是从那里跟踪版本很困难,并且根据以前的经验,我可以肯定地说,您不想依赖生产版本。 它们没有固定,因此一直在变化。 有关绝对受支持的库的列表,可以查看https://cloud.google.com/appengine/docs/python/tools/libraries27
我一直按照@ https://developers.google.com/api-client-library/python/start/installation#appengine的建议出售google-api-python-client,所以您现在所拥有的是正确的。
最后但并非最不重要的一点,正如您正确指出的那样,您看到的错误似乎已经存在了一段时间。 Dave Fisher为unrecognized field: 'resource'
提供了一种解决方法unrecognized field: 'resource'
几年前他的回答中出现unrecognized field: 'resource'
错误,事实证明是有帮助的。
顺便说一句,此问题已在最新版本的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行。 我忘记了细节,但这很容易编辑。 我只是讨厌修改生成的代码。
真正的痛苦是要做端口的所有其他小变化。 ;)这是一个更好的系统,也是一个不错的端口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.