在 Google 个云端点中一次插入多个相同类型的记录

Insert multiple Records of same type at once in Google Cloud End Points

我创建了一个 google 云端点 api,它一次接受一条记录作为 JSON。以下是 insertMethod

@ApiMethod(name = "insertRecord")
public Record insertRecord(Record record) {
    PersistenceManager mgr = getPersistenceManager();
    try {
        if(record.getSyncTime() == null)
            record.setSyncTime(new Date());
        mgr.makePersistent(record);
    } finally {
        mgr.close();
    }
    return error;
}

如果我们post一个JSON下面的格式,它会在数据存储中添加记录。

{
    ipAddress: "123.456.789.098",
    user: "buddha",
    message: "testing a single record adding"
}

我很想知道如何编写在单个 JSON 请求中获取多条记录的方法?

我尝试更改方法以获取列表,但出现错误提示我不应传递数组或列表。

经过反复试验,我按照以下方法解决了问题。

我创建了另一个 Class,其中包含如下记录列表。

public class RecordList {
    List<Record> records;

    public List<Record> getRecords() {
        return records;
    }

    public void setRecords(List<Record> records) {
        this.records= records;
    }
}

我创建了另一个 API 方法,将这个新对象作为参数

@ApiMethod(name = "insertRecordList")
public RecordList insertRecordList(RecordList records) {
    PersistenceManager mgr = getPersistenceManager();
    try {
        for(Record record : records.getRecords()){
            if(record.getSyncTime() == null)
                record.setSyncTime(new Date());
        }
        mgr.makePersistentAll(records.getRecords());
    } finally {
        mgr.close();
    }
    return records;
}   

有了这个,我可以通过 JSON 如下请求一次插入多个项目...

{
  records:[
    {
      "host": "testlist",
      "ipAddress": "sadf",
      "message": "testlist"
    },
    {
      "host": "h",
      "ipAddress": "1",
      "message": "another"
    }
  ]
}