HttpMediaTypeNotAcceptableException:当url中的资源包含.txt或.t时,找不到可接受的表示形式

时间:2014-12-12 10:05:34

标签: java json spring spring-mvc jackson

我正在使用MVC Spring和Jackson(实际上是Spring Boot)。将Java bean映射到JSON映射的工作正常,除非我尝试使用名称为http://my-service/file-info/file.txt的.txt或.t访问资源。 Spring将此记录为错误并返回406 - Not Acceptable。

但是,当我将其更改为http://my-service/file-info/file.txta时,它会起作用并返回JSON。

我认为由于某种原因,资源以.t和.txt结尾,尝试将其转换为文本格式,并且失败并出现错误。

如何关闭Spring / Jackson的行为?

这是我简单的MVC Spring方法:

@RequestMapping(value = "file-info/{file}", method = RequestMethod.GET)
public ResponseEntity<FileInfo> getFileInfo() {

    FileInfo info = new FileInfo();
    info.setName("file_name");

    return new ResponseEntity<>(info, HttpStatus.OK);
}   

这是REST实体类:

public class FileInfo {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2 个答案:

答案 0 :(得分:0)

您应该能够像这样使用它:

@RequestMapping(value = "file-info/{file}.{extension}", method = RequestMethod.GET)
public ResponseEntity<FileInfo> getFileInfo() {

    FileInfo info = new FileInfo();
    info.setName("file");
    info.setExtension("extension"); // or something like that

    return new ResponseEntity<>(info, HttpStatus.OK);
}   

答案 1 :(得分:0)

在网址末尾添加/,例如http://myservice.company.com/file-info/file.txt/