是否可以从Google Cloud Endpoints返回text / plain?

时间:2014-09-11 03:37:18

标签: google-app-engine rest google-cloud-endpoints

我想从Google Cloud Endpoints返回一个简单的文本blob,客户端将其解释为文本文件。这可能吗?

我知道不可能返回原语,但是我可以返回一个HttpServletResponse并自己设置内容吗?

1 个答案:

答案 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。