getByEmail时,REST API春季启动中的HTTP状态406

时间:2020-05-31 05:53:36

标签: java spring-boot http-status-code-406 getmethod restapi

我想通过电子邮件进行搜索,但总是收到“错误”:“不可接受”,

@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);
}

它甚至可以从数据库中获取,但是要返回抛出错误时fetch from db

但是抛出错误 enter image description here

添加标头application / json标头,但不起作用。

我可以通过byId和firstName获得的另一件事,这可以正常工作

1 个答案:

答案 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设置为自动对网址进行编码

希望这应该可行。

相关问题