2

我正在为我现有的项目使用 Jhipster(Angular + Springboot) 应用程序。

除了 jhiptser 已经生成的控制器(使用 .jh 文件)之外,我设法手动创建了一个控制器(app.resource),以实现文件下载功能。

因此,当我们启动服务器时,我们通常会启动两个服务器gradlew,即npm start. 第二个在端口 9000 上运行,最终支持热重载功能。(前端开发)

所以问题是,我能够从运行在标准 8000 端口上的服务器访问这些端点。但是,从作为代理的端口(9000),该方法返回 404。

我尝试多次清理构建应用程序。

注意:@RequestMapping新控制器上的值与已经存在的值不同。

这是否与弹簧安全有关?

提前致谢。

这是以前的控制器:

@RestController
@RequestMapping("/api")
public class FGAppDiagramResource {
@GetMapping(value = "/fg-app-diagram-downloadFile")
    public void getImage(String fileName,String folderName, HttpServletResponse 
    response){
    // Some Code
}
}

这是我的新控制器:

@RestController
@RequestMapping("/fileDownload")
public class DownloadFileController {

private final Logger log = 
LoggerFactory.getLogger(DownloadFileController.class);


public DownloadFileController() {
    super();
}

@Autowired
private ApplicationProperties applicationProperties; 

@GetMapping(value = "/fg-app-diagram-downloadFile/{fileName}/{folderName}")
public void getImage(@PathVariable String fileName,@PathVariable String folderName, HttpServletResponse response) {
// Some Code
}
}
4

1 回答 1

1

您的新控制器不使用/api,因此您必须将端点 URL 添加/fileDownload到 webpack 开发服务器的代理配置中webpack/webpack.dev.js

    proxy: [{
        context: [
            /* jhipster-needle-add-entity-to-webpack - JHipster will add entity api paths here */
            '/api',
            '/fileDownload',

您可能希望使用它/api/fileDownload来避免更改代理配置,并且因为/api它对许多其他方面很有用,例如安全性以及在 Angular 中使用 HTML5 URL 路由策略来摆脱#客户端路由(请参阅https://github.com/jhipster/generator -jhipster/pull/9098)。

/api并且/management是避免路由冲突的命名空间,因此将它们用于新端点通常是明智的。

于 2019-02-07T12:26:20.750 回答