我正在尝试在Google端点上创建一个api方法,在该方法中我要在请求主体中接收要保存在数据存储区中的数据。
但是,当我发出请求时,会收到以下响应:
this.validForWalletPresenter.change.pipe(
filter(()=> confirm('are you sure you want to edit?')),
switchMap(x => {
return <--- calling the server here --->
})
).subscribe(x => {
<--- handle server response here --->
});
请参考下面的api方法:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": "java.lang.NullPointerException"
}
],
"code": 503,
"message": "java.lang.NullPointerException"
}
}
以下是我的dao类实现:
@ApiMethod(name="profile",
path="profile",
httpMethod=HttpMethod.POST)
public UserProfile addUser(UserProfile userProfile) {
userProfileService.addUser(userProfile);
return userProfile;
}
请在下面参考实体类:
package com.travelplannr.endpoint.dao;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyFactory;
import com.googlecode.objectify.ObjectifyService;
import com.travelplannr.endpoint.entities.UserProfile;
public class UserProfileDaoImpl implements UserProfileDao {
static {
factory().register(UserProfile.class);
}
public static Objectify ofy() {
return ObjectifyService.ofy();
}
public static ObjectifyFactory factory() {
return ObjectifyService.factory();
}
@Override
public void addUser(UserProfile userProfile) {
UserProfileDaoImpl.ofy().save().entity(userProfile).now();
}
}
下面是堆栈跟踪:
package com.travelplannr.endpoint.entities;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
@Entity
public class UserProfile {
@Id
private String email;
private String name;
private String password;
public UserProfile() {}
public UserProfile(String name, String email, String password) {
this.name = name;
this.email = email;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserProfile [name=" + name + ", email=" + email + ", password=" + password + "]";
}
}
我还检查了在api方法中删除对UserProfileService.add的调用,只是返回了我在请求正文中收到的对象,并且该对象不为空。
请帮助! 预先感谢。
答案 0 :(得分:0)
您的帖子缺少的上下文是userProfileService
的初始化或如何首先设置(这不在此ApiMethod的范围内)。如果我正确理解的话,这似乎根本就不是端点的问题;那只是一条红鲱鱼。
通过临时删除Endpoints集成并确保通过用于连接事物的任何注入框架/方法正确创建所有对象引用,可以帮助加快调试速度。也许创建一个小的main()方法来触发对象引导并检查以确保此userProfileService
不为空?这样一来,您便可以在命令行环境中更快地进行迭代,直到在尝试使Endpoints集成正常工作之前找出初始化失败的根本原因。