我正在尝试将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正文作为经典请求。