Java Springboot多个rest控制器不工作,为什么?

busg9geu  于 2023-06-22  发布在  Spring
关注(0)|答案(1)|浏览(155)

我试图在单独的文件中写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浏览器什么都不hsow,我得到终端: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毫秒内完成初始化

roejwanj

roejwanj1#

我看到斜杠不见了,我们有两种方法可以在请求MapURL中定义斜杠。
1.用斜杠结束类级别的URL,所以在你的例子中@RequestMapping(“/API/auth/”)
并且在getMapping或PostMapping中开始时不带斜线,这样当代码编译和运行时,可以生成正确的URL路径。
1.保持类级别URL不变,不带斜杠结尾,因此在您的例子中@RequestMapping(“/API/auth”)
并且在getMapping或PostMapping中以斜杠开头,以便在代码编译和运行时,可以生成正确的URL路径。
在当前代码中,有一个问题可以通过接受第1点或第2点来纠正。
谢谢,阿舒托什

相关问题