Java Springboot 多个休息控制器不起作用,为什么?

问题描述 投票:0回答:1

我正在尝试在单独的文件中编写 2 个其余控制器。

这是一个控制器:

@RestController
@RequestMapping("/api/auth")
public class AuthController {
@PostMapping("login")
    public ResponseEntity<JwtAuthResponeDto> login(@RequestBody LoginDto loginDto){
        Authentication authentication = authenticationManager.authenticate(
                new UsernamePasswordAuthenticationToken(
                loginDto.getUsername(),
                loginDto.getPassword()));
        SecurityContextHolder.getContext().setAuthentication(authentication);
        String token = jwtTokenProvider.generateToken(authentication);
        return new ResponseEntity<>(new JwtAuthResponeDto(token), HttpStatus.OK);
    }

    @PostMapping("register")
    public ResponseEntity<String> register(@RequestBody RegisterDto registerDto) {
        if (userRepository.existsByUsername(registerDto.getUsername())) {
            return new ResponseEntity<>("Username is taken!", HttpStatus.BAD_REQUEST);
        }

        UserEntity user = new UserEntity();
        user.setUsername(registerDto.getUsername());
        user.setPassword(passwordEncoder.encode((registerDto.getPassword())));

        RoleEntity role = roleRepository.findByName("role_user").get();
        user.setRoles(Collections.singletonList(role));

        userRepository.save(user);

        return new ResponseEntity<>("User registered success!", HttpStatus.OK);
    }}

这是第二个:

@RestController
@RequestMapping("/views")
public class ViewController {
 
    @GetMapping("login")
    public ModelAndView login(){
        return new ModelAndView("login");
    }
}

视图控制器不显示视图,为什么?但是当我将这个 GetMapping 放入第一个控制器时,它就可以正常工作,为什么?

应用程序正在运行,当我输入/views/login webbrowser时,不要显示任何内容,我进入终端: 2023-06-12 13:20:59.994 INFO 10516 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : 初始化 Spring DispatcherServlet 'dispatcherServlet' 2023-06-12 13:20:59.995 INFO 10516 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet :初始化 Servlet 'dispatcherServlet' 2023-06-12 13:21:00.003 INFO 10516 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet :在 3 毫秒内完成初始化

java spring-boot spring-mvc spring-restcontroller
1个回答
0
投票

我发现斜杠丢失了,我们可以通过两种方式在请求映射 URL 中定义斜杠。

  1. 任一结束类级别 URL 都带有斜杠,所以在您的情况下 @RequestMapping("/api/auth/")

并且在getMapping或PostMapping中开头不加斜杠,这样当代码编译运行时,可以生成正确的URL路径。

  1. 保留类级别 URL 不变,不以斜杠结尾,因此在您的情况下 @RequestMapping("/api/auth")

并且在getMapping或PostMapping中以斜杠开头,这样代码编译运行时,就可以生成正确的URL路径。

当前代码中存在一个问题,可以通过接受第 1 点或第 2 点来纠正。

谢谢, 阿舒托什

© www.soinside.com 2019 - 2024. All rights reserved.