【问题标题】:HTTP Status 406 in rest api spring boot when getByEmailgetByEmail时rest api spring boot中的HTTP状态406
【发布时间】:2023-03-17 07:40:01
【问题描述】:

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

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

即使它可以从数据库中获取但是当想要返回时抛出错误

但抛出错误

添加 header application/json header 但不起作用。

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

【问题讨论】:

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


【解决方案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自动做url的编码

希望这应该可行。

【讨论】:

  • 谢谢。只需在 {email:.+}/ 添加斜杠 (/) 结尾,我的问题就解决了,但我不明白为什么必须添加斜杠结尾。
猜你喜欢
  • 2018-07-22
  • 2020-11-27
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 2011-06-26
  • 2019-05-03
  • 1970-01-01
  • 2019-04-30
相关资源
最近更新 更多