在 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"
}
]
}
我创建了一个 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"
}
]
}