云端点ResponseMessage对我来说似乎很简单。如果我有一个响应消息类
class FoodieResponseMessage(messages.Message):
name = messages.StringField(1)
fav_food = messages.StringField(2)
city = messages.StringField(3)调用它非常简单,如下所示
FoodieResponseMessage(name="A", fav_food="B", city="C")但是,具有多个字段的RequestMessage又如何呢?我从服务端点方法得到的只是一个request对象。我如何知道哪个字段位于何处?
class FoodieRequestMessage(messages.Message):
name = messages.StringField(1)
id = messages.StringField(2)
sitting_table = messages.StringField(3)
@endpoints.method(FoodieRequestMessage, FoodieResponseMessage)
def process(self, request):
name = request.name
id = request.id
table = request.sitting_table当我执行request.name时,请求如何与字段匹配,这样我就不会得到用户的sitting_table
发布于 2013-03-22 01:40:52
您的方法需要是API类的成员:
from protorpc import remote
class FoodieAPI(remote.Service):
@endpoints.method(FoodieRequestMessage, FoodieResponseMessage)
def process(self, request):
# Handle request由于process是remote.Service子类的成员,因此由
application = endpoints.api_server([FoodieApi])知道如何将JSON转换为您指定的本地消息请求类(FoodieRequestMessage),并希望您返回您指定的响应类的一个实例(FoodieResponseMessage),因为它也可以将该实例转换回JSON。
例如:
>>> import json
>>> from protorpc import protojson
>>>
>>> payload = json.dumps({
>>> 'name': 'Dan',
>>> 'fav_food': 'Mac and Cheese',
>>> 'city': 'San Francisco'
>>> })
>>> message = protojson.decode_message(FoodieResponseMessage, payload)
>>> message
<FoodieResponseMessage
name: u'Dan'
fav_food: u'Mac and Cheese'
city: u'San Francisco'>因此,当您的请求有效负载
{"city": "San Francisco", "fav_food": "Mac and Cheese", "name": "Dan"}方法中的request对象将具有
>>> message.name
u'Dan'
>>> message.fav_food
u'Mac and Cheese'
>>> message.city
u'San Francisco'https://stackoverflow.com/questions/15530101
复制相似问题