我有Service
使用Client
类进行各种API调用。 API需要token
才能过期。此token
保存在数据库中,因此我只在新标记到期时获取它。我正在寻找一种干净的方式来编写这段代码。目前,伪代码看起来像这样:
public class Service {
@Autowired
private Client client;
public void createUser() {
Token token = readTokenFromDb();
if (token.isExpired()) {
token = client.readToken();
save(token);
}
client.createUser(token);
}
public void readUsers() {
Token token = readTokenFromDb();
if (token.isExpired()) {
token = client.readToken();
save(token);
}
client.readUsers(token);
}
public void updateUsers() {
// similar code
}
// many other similar methods
}
避免if
块为每个方法刷新令牌的最佳方法是什么?换句话说,有一个共同的地方去做。
如果重要,这是一个Spring项目,而Client
正在使用@Autowired
RestTemplate
来调用API。
答案 0 :(得分:3)
这样的事情:
private Token checkToken(){
Token token = readTokenFromDb();
if (token.isExpired()) {
token = client.readToken();
save(token);
}
return token;
}
方法:
public void readUsers() {
Token token = checkToken();
client.readUsers(token);
}