Python Google endpoints_proto_datastore 列表数据
Python Google endpoints_proto_datastore list data
我正在尝试使用 endpoints_proto_datastore 为我的 App Engine 应用程序创建一些端点,它之所以有效,是因为 url return 有些东西,但不是我所期望的。
这是我的代码,我知道有些导入是不需要的,但它们是临时的
模型文件
import endpoints
from google.appengine.ext import db
import webapp2
from endpoints_proto_datastore.ndb import EndpointsModel
class Estate(EndpointsModel):
hicid = db.IntegerProperty()
name = db.StringProperty()
address= db.PostalAddressProperty()
contact_phone = db.PhoneNumberProperty()
contact_name = db.StringProperty()
contact_email = db.EmailProperty()
location = db.GeoPtProperty()
created = db.DateTimeProperty(auto_now_add=True)
updated = db.DateTimeProperty(auto_now=True)
API 文件
import endpoints
from google.appengine.ext import ndb
from protorpc import remote
from endpoints_proto_datastore.ndb import EndpointsModel
from models.estate import *
@endpoints.api(name = 'raceManagerAPI', version = 'v1', description = 'An api for access to important data')
class raceManagerAPI(remote.Service):
@Estate.query_method(path = 'estates', name = 'estate.list')
def EstateList(self, query):
return query
app.yaml 文件
application: yellow-fox
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /assets
static_dir: assets
- url: /signup
script: main.app
secure: always
- url: /login
script: main.app
secure: always
- url: /forgot
script: main.app
secure: always
# Endpoints Api
- url: /_ah/spi/.*
script: main.application
- url: .*
script: main.app
libraries:
- name: webapp2
version: "2.5.1"
- name: jinja2
version: latest
- name: endpoints
version: latest
main.py 文件在
中有这个
application = endpoints.api_server([raceManagerAPI], restricted=False)
这就是我从 api 浏览器
得到的信息
{
"kind": "raceManagerAPI#estateItem",
"etag": "\"hx0GGGqNWMq76QilvaW15fvq6DI/taVVBKufuJZtJ6w1S7kF6sHCh4M\""
}
我期待的是一个项目列表,谁能告诉我我哪里出错了文档没有给我太多的想法。
我认为您的问题来自于在此处使用旧样式 db
:
from google.appengine.ext import db
以及Estate
的各种属性中,如:
name = db.StringProperty()
相反,您必须使用 新样式 ndb
,将这两行分别更改为:
from google.appengine.ext import ndb
和:
name = ndb.StringProperty()
现在,在 ndb
中您将找不到 PostalAddressProperty
&c,因此您需要修复它们。但是,总体思路是:永远使用 ndb
,不要 db
。
我正在尝试使用 endpoints_proto_datastore 为我的 App Engine 应用程序创建一些端点,它之所以有效,是因为 url return 有些东西,但不是我所期望的。
这是我的代码,我知道有些导入是不需要的,但它们是临时的
模型文件
import endpoints
from google.appengine.ext import db
import webapp2
from endpoints_proto_datastore.ndb import EndpointsModel
class Estate(EndpointsModel):
hicid = db.IntegerProperty()
name = db.StringProperty()
address= db.PostalAddressProperty()
contact_phone = db.PhoneNumberProperty()
contact_name = db.StringProperty()
contact_email = db.EmailProperty()
location = db.GeoPtProperty()
created = db.DateTimeProperty(auto_now_add=True)
updated = db.DateTimeProperty(auto_now=True)
API 文件
import endpoints
from google.appengine.ext import ndb
from protorpc import remote
from endpoints_proto_datastore.ndb import EndpointsModel
from models.estate import *
@endpoints.api(name = 'raceManagerAPI', version = 'v1', description = 'An api for access to important data')
class raceManagerAPI(remote.Service):
@Estate.query_method(path = 'estates', name = 'estate.list')
def EstateList(self, query):
return query
app.yaml 文件
application: yellow-fox
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /assets
static_dir: assets
- url: /signup
script: main.app
secure: always
- url: /login
script: main.app
secure: always
- url: /forgot
script: main.app
secure: always
# Endpoints Api
- url: /_ah/spi/.*
script: main.application
- url: .*
script: main.app
libraries:
- name: webapp2
version: "2.5.1"
- name: jinja2
version: latest
- name: endpoints
version: latest
main.py 文件在
中有这个application = endpoints.api_server([raceManagerAPI], restricted=False)
这就是我从 api 浏览器
得到的信息{
"kind": "raceManagerAPI#estateItem",
"etag": "\"hx0GGGqNWMq76QilvaW15fvq6DI/taVVBKufuJZtJ6w1S7kF6sHCh4M\""
}
我期待的是一个项目列表,谁能告诉我我哪里出错了文档没有给我太多的想法。
我认为您的问题来自于在此处使用旧样式 db
:
from google.appengine.ext import db
以及Estate
的各种属性中,如:
name = db.StringProperty()
相反,您必须使用 新样式 ndb
,将这两行分别更改为:
from google.appengine.ext import ndb
和:
name = ndb.StringProperty()
现在,在 ndb
中您将找不到 PostalAddressProperty
&c,因此您需要修复它们。但是,总体思路是:永远使用 ndb
,不要 db
。