Google Cloud Endpoint /如何获取json-body请求?

时间:2017-12-05 11:46:16

标签: python api curl google-cloud-platform google-cloud-endpoints

我正在尝试将POST请求发送到端点时获取json正文。

我定义了我的方法和类:

class UserRequest(messages.Message):
    f1 = messages.IntegerField(1)
    f2 = messages.StringField(2)

class UserResponse(messages.Message):
    content = messages.StringField(1)

USER_RESOURCE = endpoints.ResourceContainer(
    UserRequest)


@endpoints.api(name='echo', version='v1')

class EchoApi(remote.Service):

@endpoints.method(
    USER_RESOURCE,
    UserResponse,
    path='echo',
    http_method='POST',
    name='echo')
def echo(self, request):
    data = {x.name: getattr(request, x.name) for x in request.all_fields()}
    return UserResponse(content=str(data))

当我向我的终端发送一个卷曲帖子而没有包含在下面的主体:

curl -x POST http://localhost:8080/_ah/api/echo/v1/echo?f1=asdf&f2=qwert

我通过request.f1和request.f2获得了f1和f2。

但是当我与身体进行卷曲时:

curl -H "Content-Type: application/json" -X POST -d '{"f1": "asdf", "f2":"qwert"}' http://localhost:8080/_ah/api/echo/v1/echo 

请求对象不包含f1和f2值,它们保存在< request._Message__unrecognized_fields()>。

我想知道是否可以直接将json正文作为经典请求。

0 个答案:

没有答案