GAE:不能将导入的 class 与端点 API 方法一起使用
GAE: Can't use imported class with Endpoints API method
我有一个 class 包含一个写入我的数据存储的方法。我可以使用它从我的网络写入我的数据存储,但我不知道如何将它用于我的 API POST。
DatastoreWrite.py:
from endpoints_proto_datastore.ndb import EndpointsModel
from google.appengine.ext import ndb
def person_timestamp_key(person_timestamp):
return ndb.Key('Person Timestamp', person_timestamp)
class Person(EndpointsModel):
name = ndb.StringProperty(indexed=False)
timestamp = ndb.DateTimeProperty(auto_now_add=True)
def do_insert(self, name):
person_timestamp = 'person_timestamp'
# Sets entity
person = Person(parent=person_timestamp_key(person_timestamp))
person.name = name
person.put()
webapp.py - 当从 webapp 提交时,这成功地在我的数据存储中添加了一个条目:
def post(self):
name = self.request.get('name')
person = DatastoreWrite.Person()
if name and not name.isspace():
person.do_insert(name)
self.redirect('/')
api.py - 我在这里尝试了一百种不同的方法。这就是我目前所拥有的。结果 "BadValueError: Expected string, got Person()":
class Api(remote.Service):
@Person.method(path='api', http_method='POST', name='person.insert')
def PersonInsert(self, person):
person = DatastoreWrite.Person()
person.do_insert(person)
return person
更新:另一次尝试 - 失败并出现错误 "BadValueError: Expected string, got Person(name=u'Atlas')":
@DatastoreWrite.Person.method(path='healthsecure', http_method='POST', name='person.insert')
def PersonInsert(self, name):
person = DatastoreWrite.Person()
person.do_insert(name)
return person
do_insert 函数有一个签名 def do_insert(self, name)
,它需要名称作为参数,它是一个字符串,而您发送的人作为参数 person.do_insert(person)
。
解决方案:
@DatastoreWrite.Person.method(path='healthsecure', http_method='POST', name='person.insert')
def PersonInsert(self, person):
person.do_insert(person.name)
return person
我有一个 class 包含一个写入我的数据存储的方法。我可以使用它从我的网络写入我的数据存储,但我不知道如何将它用于我的 API POST。
DatastoreWrite.py:
from endpoints_proto_datastore.ndb import EndpointsModel
from google.appengine.ext import ndb
def person_timestamp_key(person_timestamp):
return ndb.Key('Person Timestamp', person_timestamp)
class Person(EndpointsModel):
name = ndb.StringProperty(indexed=False)
timestamp = ndb.DateTimeProperty(auto_now_add=True)
def do_insert(self, name):
person_timestamp = 'person_timestamp'
# Sets entity
person = Person(parent=person_timestamp_key(person_timestamp))
person.name = name
person.put()
webapp.py - 当从 webapp 提交时,这成功地在我的数据存储中添加了一个条目:
def post(self):
name = self.request.get('name')
person = DatastoreWrite.Person()
if name and not name.isspace():
person.do_insert(name)
self.redirect('/')
api.py - 我在这里尝试了一百种不同的方法。这就是我目前所拥有的。结果 "BadValueError: Expected string, got Person()":
class Api(remote.Service):
@Person.method(path='api', http_method='POST', name='person.insert')
def PersonInsert(self, person):
person = DatastoreWrite.Person()
person.do_insert(person)
return person
更新:另一次尝试 - 失败并出现错误 "BadValueError: Expected string, got Person(name=u'Atlas')":
@DatastoreWrite.Person.method(path='healthsecure', http_method='POST', name='person.insert')
def PersonInsert(self, name):
person = DatastoreWrite.Person()
person.do_insert(name)
return person
do_insert 函数有一个签名 def do_insert(self, name)
,它需要名称作为参数,它是一个字符串,而您发送的人作为参数 person.do_insert(person)
。
解决方案:
@DatastoreWrite.Person.method(path='healthsecure', http_method='POST', name='person.insert')
def PersonInsert(self, person):
person.do_insert(person.name)
return person