我想从Google Cloud Endpoints返回一个简单的文本blob,客户端将其解释为文本文件。这可能吗?
我知道不可能返回原语,但是我可以返回一个HttpServletResponse并自己设置内容吗?
答案 0 :(得分:2)
免责声明:未经测试,只是一个题库。
Cloud Endpoints使用ProtoRPC作为底层传输,它通过线路将消息编码为JSON。您无法更改此行为。返回文本文件的最简单方法是只为文本文件定义一个带有一个String成员的简单消息类:
public class TextFile {
private String text;
// getText, setText methods ...
}
然后您的Endpoints方法看起来像这样:
@Api(name = "my_api", ...)
public class MyAPI {
@ApiMethod(name = "myapi.returntext", httpMethod = "get)
public TextFile returnText() {
TextFile response = new TextFile;
response.setText(read_text_from_some_source());
return response;
}
}
您将从此方法获得一个简单的JSON响应,该响应应该很容易解析文本数据:
{ "text": "<contents_of_text_dump>" }
响应可能有一些额外的字段,例如'kind'和'etag',你可以忽略它们。
当然,如果你只想转储一些文本,最简单的方法是完全忘记端点,只需设置一个GET处理程序:
public class ReturnText extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
response.getWriter().write(read_text_from_some_source());
}
}
然后,您可以将其映射到web.xml中您希望的任何端点URL。