我有以下控制器和Service类,
UserController.java:
UserService.java
也遵循Service class
@Override public String getUserID(IContext requestContext, String userName) { String userID = null; List<User> users = createUser(context, userName); userID = <API>.getID(context, userList); return userID; } @Override public UserDetails getUserDetails(IContext context, String userID) { UserDetails userDetails = null; userDetails = <API>.getUserDetails(userID, context); return userDetails; } @Override public UserList getUserList(IContext context, String requestAsJSON) { JsonObject requestObj = new JsonParser().parse(requestAsJSON).getAsJsonObject(); String userName = requestObj.get("Name").getAsString(); UserCard userCard = createCard(userName); List<User> users = new ArrayList<>(); users.add(userCard); UserList userList = new UserList(); userList.setUsers(users); .. return userList; } .... private List<User> createUser(IContext context, String userName) { List<User> users = new ArrayList<>(); UserCard userCard = createCard(userName); users.add(userCard); return users; } private UserCard createCard(String userName) { UserCard userCard = new UserCard(); userCard.setOfficeID(12345); userCard.setAddress("Addr1"); userCard.setOffice(“Test”); return userCard; }
:
createCard
当前createCard
方法在获取用户(“ / user / getUser”)和预订(“ / user / Booking”)时调用两次。
我想在“ / user / getUser”时{{1}},在“ / user / Booking”时获取此卡。我想获得有关创建吸气剂和吸气剂的帮助。
答案 0 :(得分:1)
在服务中,您可以使用Map
将name
和userCard
存储为键值对:
static Map<String , UserCard> userCardInfo = new HashMap<>();
//inside createUser populate it
private List<User> createUser(IContext context, String userName) {
List<User> users = new ArrayList<>();
UserCard userCard = createCard(userName);
users.add(userCard);
this.userCardInfo.put(userName , userCard);
return users;
}
//and inside getUserList retrieve from that map
public UserList getUserList(IContext context, String requestAsJSON) {
JsonObject requestObj = new JsonParser().parse(requestAsJSON).getAsJsonObject();
String userName = requestObj.get("Name").getAsString();
UserCard userCard = null;
if(this.userCardInfo.containsKey(userName)) {
userCard = this.userCardInfo.get(userName);
} else {
userCard = createCard(userName);
}
List<User> users = new ArrayList<>();
users.add(userCard);
UserList userList = new UserList();
userList.setUsers(users);
return userList;
}
答案 1 :(得分:1)
这两个是单独的请求。 REST 是无状态的,那么该怎么做呢?最佳选择可以是:您可以将在第一次请求时创建的数据传递到客户端。然后在第二次请求中,您的客户将通过 requestbody 提供此数据。您可以将数据放在静态变量上,但这不是一个好习惯。
您可以这样做:
if (UserID != null) {
UserDetails userDetails = userService.getUserDetails(context, userID);
responseMap.put("userDetails",userDetails);
}
当从客户端呼叫时,客户端应添加用户卡数据以进行请求。建立一个在 request 对象上接受 usercardata 的请求。可能是您的代码已经在执行此操作。