apiclient.discovery.build POST请求正文

时间:2015-12-24 23:11:17

标签: python google-app-engine http-post google-api-client

我正在将python用于我的服务器Google App Engine API代码和我的客户端。我已经有很多客户端 - 服务器GET请求正在运行,现在是时候发出POST请求而且我被卡住了。我的相关客户代码:

service = build("myAPI", "v1", http=http, discoveryServiceUrl=DISCOVERY_URL)
service.updateUser(websafeKey=websafeKey).execute()

我无法弄清楚如何构建POST请求的主体。在那之后,我将不知道如何告诉service有关它的信息,以便它可以将请求发送到我的updateUser API。

POST请求正文需要包含一些字符串和几个列表,以后可能包含一个python Date对象。

我的updateUser API在API资源管理器中运行良好 - 我可以整天成功updateUser

USER_POST_REQUEST = endpoints.ResourceContainer(
UserForm, websafeKey=messages.StringField(1),)
@endpoints.method(USER_POST_REQUEST, UserForm,
        path='useradmin/{websafeKey}',
        http_method='PUT', name='updateUser')
def updateUser(self, request):
    """Update user w/provided fields & return w/updated info."""
    return self._updateUserObject(request)

1 个答案:

答案 0 :(得分:3)

我自己想通了。显然,您需要做的就是定义一个字典并将其作为服务方法调用中的body参数传递。这是我做的:

body = {'key1': user['info1'], 'key2': user['info2']}
service = build("myAPI", "v1", http=http, discoveryServiceUrl=DISCOVERY_URL)
service.updateFan(websafeFanKey=fan['websafeKey'], body=body).execute()

非常简单,但是我确实很难找到任何记录这一点的东西。希望其他人可以受益。