Google app engine 应用引擎终结点接受请求正文中的POST数据

Google app engine 应用引擎终结点接受请求正文中的POST数据,google-app-engine,Google App Engine,我已在我的App Engine服务器中创建了一个Google端点,如下所示: package com.xxxxx.gcmbackend; import com.google.api.server.spi.config.Api; import com.google.api.server.spi.config.ApiMethod; import com.google.api.server.spi.config.ApiNamespace; import com.google.api.server.sp

我已在我的App Engine服务器中创建了一个Google端点,如下所示:

package com.xxxxx.gcmbackend;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.ApiNamespace;
import com.google.api.server.spi.response.CollectionResponse;

import java.util.List;
import java.util.logging.Logger;
import javax.inject.Named;

import static com.xxxxxx.gcmbackend.OfyService.ofy;

@Api(
        name = "register",
        version = "v1",
        namespace = @ApiNamespace(
                ownerDomain = "gcmbackend.xxxxx.com",
                ownerName = "gcmbackend.xxxxx.com",
                packagePath=""
        )
)


public class UserRegistrationEndpoint {
    private static final Logger log = Logger.getLogger(RegistrationEndpoint.class.getName());
    @ApiMethod(name = "register")
    public void registerDevice(@Named("regId") String regId, @Named("username") String username, @Named("phone") String phone) {
        if(findRecord(regId) != null) {
            log.info("Device " + regId + " already registered, skipping register");
            return;
        }
        RegistrationRecord record = new RegistrationRecord();
        record.setRegId(regId);
        record.setUsername(username);
        record.setPhone(phone);
        ofy().save().entity(record).now();
    }
    private RegistrationRecord findRecord(String regId) {
        return ofy().load().type(RegistrationRecord.class).filter("regId", regId).first().now();
    }
}
{
    regId: "some_value",
    username: "some_value",
    phone: "some_value"
}
这在创建新用户记录时非常有效。API的格式如下:

http://example.appspot.com/_ah/api/register/v1/registerDevice/<regId>/<username>/<phone>
然后按如下方式发送POST数据:

package com.xxxxx.gcmbackend;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.ApiNamespace;
import com.google.api.server.spi.response.CollectionResponse;

import java.util.List;
import java.util.logging.Logger;
import javax.inject.Named;

import static com.xxxxxx.gcmbackend.OfyService.ofy;

@Api(
        name = "register",
        version = "v1",
        namespace = @ApiNamespace(
                ownerDomain = "gcmbackend.xxxxx.com",
                ownerName = "gcmbackend.xxxxx.com",
                packagePath=""
        )
)


public class UserRegistrationEndpoint {
    private static final Logger log = Logger.getLogger(RegistrationEndpoint.class.getName());
    @ApiMethod(name = "register")
    public void registerDevice(@Named("regId") String regId, @Named("username") String username, @Named("phone") String phone) {
        if(findRecord(regId) != null) {
            log.info("Device " + regId + " already registered, skipping register");
            return;
        }
        RegistrationRecord record = new RegistrationRecord();
        record.setRegId(regId);
        record.setUsername(username);
        record.setPhone(phone);
        ofy().save().entity(record).now();
    }
    private RegistrationRecord findRecord(String regId) {
        return ofy().load().type(RegistrationRecord.class).filter("regId", regId).first().now();
    }
}
{
    regId: "some_value",
    username: "some_value",
    phone: "some_value"
}

为了实现这种格式,我需要在端点中更改什么?

您需要创建一个带有regId、用户名和电话属性(例如RegistrationInput)的java bean

然后将上面的JavaBeanRegistrationInput作为参数添加到ApiMethod中


嘿你能再解释一下吗?我是Java新手,所以我不确定您所说的JavaBean是什么意思,以及它的外观。更新了答案。javabean是一个简单的类,几乎没有属性。它还为每个属性提供了getter和setter方法。
@ApiMethod(name = "register")
public void registerDevice(RegistrationInput input) {
    .....
}