Java 使用springrest端点提供yaml文件
我想用Spring通过REST端点提供一个.yaml文件,我知道它不能直接显示在浏览器中(这里只说Chrome),因为它不支持显示yaml文件。 我已经包括了我认为为此目的所必需的图书馆Java 使用springrest端点提供yaml文件,java,spring,yaml,Java,Spring,Yaml,我想用Spring通过REST端点提供一个.yaml文件,我知道它不能直接显示在浏览器中(这里只说Chrome),因为它不支持显示yaml文件。 我已经包括了我认为为此目的所必需的图书馆 编译组:'com.fasterxml.jackson.dataformat',名称:'jackson dataformat yaml',版本:'2.9.9' 如果我在浏览器中打开端点/v2/api doc,它将提示我下载与端点/v2/api doc完全相同的文件。它包含正确的内容 问题:是否有方法正确传输.ya
编译组:'com.fasterxml.jackson.dataformat',名称:'jackson dataformat yaml',版本:'2.9.9'
如果我在浏览器中打开端点/v2/api doc
,它将提示我下载与端点/v2/api doc
完全相同的文件。它包含正确的内容
问题:是否有方法正确传输.yaml文件,以便提示用户保护myfile.yaml
@RequestMapping(value = "/v2/api-doc", produces = "application/x-yaml")
public ResponseEntity<String> produceApiDoc() throws IOException {
byte[] fileBytes;
try (InputStream in = getClass().getResourceAsStream("/restAPI/myfile.yaml")) {
fileBytes = IOUtils.toByteArray(in);
}
if (fileBytes != null) {
String data = new String(fileBytes, StandardCharsets.UTF_8);
return new ResponseEntity<>(data, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
@RequestMapping(value=“/v2/api doc”,products=“application/x-yaml”)
公共响应属性produceApiDoc()引发IOException{
字节[]文件字节;
try(InputStream in=getClass().getResourceAsStream(“/restAPI/myfile.yaml”)){
fileBytes=IOUtils.toByteArray(in);
}
if(fileBytes!=null){
字符串数据=新字符串(fileBytes,StandardCharsets.UTF_8);
返回新的响应属性(数据,HttpStatus.OK);
}否则{
返回新的ResponseEntity(未找到HttpStatus.NOT_);
}
}
您应该设置内容配置
标题(我建议使用ResourceLoader
在Spring Framework中加载资源)
例如:
@RestController
公共类ApiDocResource{
私有最终资源加载器资源加载器;
公共ApiDocResource(ResourceLoader ResourceLoader){
this.resourceLoader=resourceLoader;
}
@GetMapping(value=“/v2/api doc”,products=“应用程序/x-yaml”)
公共响应属性produceApiDoc()引发IOException{
Resource=resourceLoader.getResource(“类路径:/restAPI/myfile.yaml”);
if(resource.exists()){
返回响应性
.ok()
.contentType(MediaType.parseMediaType(“应用程序/x-yaml”))
.header(“内容处置”、“附件;文件名=myfile.yaml”)
.body(新的InputStreamResource(resource.getInputStream());
}否则{
返回新的ResponseEntity(未找到HttpStatus.NOT_);
}
}
}