首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >支持多字段解析的谷歌云端点RequestMessage

支持多字段解析的谷歌云端点RequestMessage
EN

Stack Overflow用户
提问于 2013-03-21 01:04:51
回答 1查看 395关注 0票数 2

云端点ResponseMessage对我来说似乎很简单。如果我有一个响应消息类

代码语言:javascript
复制
class FoodieResponseMessage(messages.Message):
  name = messages.StringField(1)
  fav_food = messages.StringField(2)
  city = messages.StringField(3)

调用它非常简单,如下所示

代码语言:javascript
复制
FoodieResponseMessage(name="A", fav_food="B", city="C")

但是,具有多个字段的RequestMessage又如何呢?我从服务端点方法得到的只是一个request对象。我如何知道哪个字段位于何处?

代码语言:javascript
复制
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

EN

Stack Overflow用户

回答已采纳

发布于 2013-03-22 01:40:52

您的方法需要是API类的成员:

代码语言:javascript
复制
from protorpc import remote

class FoodieAPI(remote.Service):

  @endpoints.method(FoodieRequestMessage, FoodieResponseMessage)
  def process(self, request):
    # Handle request

由于processremote.Service子类的成员,因此由

代码语言:javascript
复制
application = endpoints.api_server([FoodieApi])

知道如何将JSON转换为您指定的本地消息请求类(FoodieRequestMessage),并希望您返回您指定的响应类的一个实例(FoodieResponseMessage),因为它也可以将该实例转换回JSON。

例如:

代码语言:javascript
复制
>>> 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'>

因此,当您的请求有效负载

代码语言:javascript
复制
{"city": "San Francisco", "fav_food": "Mac and Cheese", "name": "Dan"}

方法中的request对象将具有

代码语言:javascript
复制
>>> message.name
u'Dan'
>>> message.fav_food
u'Mac and Cheese'
>>> message.city
u'San Francisco'
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15530101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档