我想通过电子邮件进行搜索,但总是收到“错误”:“不可接受”,
@RestController
@RequestMapping("api/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping(value = "/{name:.+}")
public User getUser(@PathVariable String name) {
return userService.getUserByEmail(name);
}
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public User getUserByEmail(String email){
User user = userRepository.findByEmail(email).get();
return user;
}
@Repository
public interface UserRepository extends JpaRepository<User,Long> {
Optional<User> findByEmail(@Param("email") String email);
}
添加标头application / json标头,但不起作用。
我可以通过byId和firstName获得的另一件事,这可以正常工作
答案 0 :(得分:1)
尝试在控制器的 pathVariable 中添加值:
括号中的内容是一个正则表达式,因此应该可以使用。
@GetMapping("/statusByEmail/{email:.+}/")
public String statusByEmail(@PathVariable(value = "email") String email){
//code
}
从邮递员/休息客户那里
Get http://mywebhook.com/statusByEmail/abc.test@gmail.com/
如果这不起作用,请尝试以URLEncoded格式提供电子邮件:
问题可能是由于请求中的多个.
例如:alireza.ca%40gmail.com
或
您可以将Content-Type: application/x-www-form-urlencoded
设置为自动对网址进行编码
希望这应该可行。