Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用springrest端点提供yaml文件_Java_Spring_Yaml - Fatal编程技术网

Java 使用springrest端点提供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

我想用Spring通过REST端点提供一个.yaml文件,我知道它不能直接显示在浏览器中(这里只说Chrome),因为它不支持显示yaml文件。 我已经包括了我认为为此目的所必需的图书馆
编译组:'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_);
}
}
}