gpt4 book ai didi

java - 在 Rest Controller 类而不是每个 Controller 方法中获取用户

转载 作者:行者123 更新时间:2023-12-01 20:24:29 25 4
gpt4 key购买 nike

我有一个 @RestController,其中包含一堆 Rest 端点作为方法。

@RequestMapping(path="",method=RequestMethod.POST)
public void create(Principal principal) {
String userName = principal.getName();
User user = UsersRepository.loadUser(userName);
//....
}

@RequestMapping(path="/{groupId}",method=RequestMethod.DELETE)
public void deleteGroup(@PathVariable String groupId, Principal principal) {
String userName = principal.getName();
User user = UsersRepository.loadUser(userName);
//....
}

在每个方法中我都必须重复此代码:

    String userName = principal.getName();
User user = UsersRepository.loadUser(userName);

有没有办法不在每个方法中重复这个并在类中获取它,并在每个方法中使用它?

最佳答案

1)非常基本,但为什么不简单地用私有(private)方法提取它:

public User getUser(Principal principal){
String userName = principal.getName();
User user = UsersRepository.loadUser(userName);
//....
return user;
}

你可以这样写:

@RequestMapping(path="",method=RequestMethod.POST)
public void create(Principal principal) {
User user = getUser(principal);
//....
}

2) 更高级:您可以使用 Spring 拦截器来读取请求、加载用户并将其连接到具有请求范围的 bean 中。

关于java - 在 Rest Controller 类而不是每个 Controller 方法中获取用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44100958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com