端点生成的客户端库
Endpoints generated client library
我的问题是我迁移到了 Endpoints v2,然后在某个时候我的 GCM 注册码停止工作。
停止工作了吗?更具体地说,生成的客户端库正尝试发送一个 POST 请求,格式为本图第一行提供的格式:
第二行是我自己使用 Postman 手动发送请求时发生的情况(更改它以便它在 URL 片段而不是查询字符串中发送数据)。这有效,并已添加到我的数据库中。
使用标准 API 生成器发送注册:
Registration.Builder builder = new Registration.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), null)
.setRootUrl("https://"+Constants.PROJECT_ID+".appspot.com/_ah/api/");
regService = builder.build();
regService.registerDevice(gcmRegistrationId).execute();
端点本身如下所示:
@ApiMethod(name = "registerDevice", httpMethod = "post")
public void registerDevice(@Named("regId") String regId) {
if(findRecord(regId) != null) {
log.info("Device " + regId + " already registered, skipping register");
return;
}
RegistrationRecord record = new RegistrationRecord();
record.setRegId(regId);
ofy().save().entity(record).now();
}
如何解决?
正在使用以下命令部署和生成我的代码:
gradlew endpointsOpenApiDocs
gcloud endpoints services deploy backend\build\endpointsOpenApiDocs\openapi.json
gradlew appengineDeploy
gradlew endpointsClientLibs
如果你希望参数是一个查询字符串,它也应该被标记为@Nullable。这将告诉您将参数从路径中取出。看起来新旧框架的配置有些不匹配,但是查询参数使用@Nullable,路径参数省略更正确。
我的问题是我迁移到了 Endpoints v2,然后在某个时候我的 GCM 注册码停止工作。
停止工作了吗?更具体地说,生成的客户端库正尝试发送一个 POST 请求,格式为本图第一行提供的格式:
第二行是我自己使用 Postman 手动发送请求时发生的情况(更改它以便它在 URL 片段而不是查询字符串中发送数据)。这有效,并已添加到我的数据库中。
使用标准 API 生成器发送注册:
Registration.Builder builder = new Registration.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), null)
.setRootUrl("https://"+Constants.PROJECT_ID+".appspot.com/_ah/api/");
regService = builder.build();
regService.registerDevice(gcmRegistrationId).execute();
端点本身如下所示:
@ApiMethod(name = "registerDevice", httpMethod = "post")
public void registerDevice(@Named("regId") String regId) {
if(findRecord(regId) != null) {
log.info("Device " + regId + " already registered, skipping register");
return;
}
RegistrationRecord record = new RegistrationRecord();
record.setRegId(regId);
ofy().save().entity(record).now();
}
如何解决?
正在使用以下命令部署和生成我的代码:
gradlew endpointsOpenApiDocs
gcloud endpoints services deploy backend\build\endpointsOpenApiDocs\openapi.json
gradlew appengineDeploy
gradlew endpointsClientLibs
如果你希望参数是一个查询字符串,它也应该被标记为@Nullable。这将告诉您将参数从路径中取出。看起来新旧框架的配置有些不匹配,但是查询参数使用@Nullable,路径参数省略更正确。