如何在Java REST webservice中返回“text / plain”或“application / json”?

时间:2017-07-19 18:52:16

标签: java json web-services rest

我有一个返回文件文本的web服务。如果出现问题,我想发回一个描述错误的json对象。我已经读过在@Produces注释中可能有多个MediaTypes,但是我无法使它工作(它只是第一个MediaType)。我可能需要一种方式来说“在这里生成文本,在这里生成json”。

@GET
//@Produces( {MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON} ) doesn't work either.
@Produces( MediaType.TEXT_PLAIN )
@Path( "/{filename}" )
public Response get( @PathParam( "filename" ) String filename ) {

    String text;

    try {
        text = service.getFileText( service.getDirectory(), filename );
    }
    catch ( MyFileNotFoundException ex ) {
        //Make a JSON object describing the error.
        return ErrorResponder.sendErrorObject(ex.getMessage(), Response.Status.BAD_REQUEST);
    }

    //Send back plain text.
    return Response.ok().entity( text ).build();
}

感谢。

ErrorResponder.sendErrorObject目前如此返回;将尝试.type()函数:

return Response.status( status ).entity( errorObject ).build();

2 个答案:

答案 0 :(得分:0)

如何将MediaType用于多次返回类型。

import javax.ws.rs.core.MediaType;

@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN })

可以在这里查看其相关的question

答案 1 :(得分:-1)

可以配置多个MIME类型,如下所示

@Produces({"text/plain", "application/json"})