Micronaut中HttpServletRequest和HttpServletResponse的替代方案

时间:2019-04-26 15:08:37

标签: java kotlin micronaut

我正在和Micronaut一起玩,我目前想念的是对@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (userPressedKey) { if (keyCode == KeyEvent.KEYCODE_SPACE) { adress.setText(""); return true; } } super.onKeyDown(keyCode, event); } HttpServletRequest的访问权限。这些通常允许访问以下内容:

  • 请求参数
  • 输入/输出流(尤其是直接写入输出流)
  • 获取/设置cookie
  • 获取/设置标题
  • 获取客户端IP

我也不确定用于以下方面的替代方案:

  • HttpServletResponse
  • @RequestParam files: List<MultipartFile>

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

https://docs.micronaut.io/latest/guide/index.html#requestResponsehttps://docs.micronaut.io/latest/guide/index.html#binding显示了如何绑定到请求参数,cookie,标头等。

https://docs.micronaut.io/latest/guide/index.html#uploads显示了如何处理文件上传。

  

输入/输出流(尤其是直接写入输出流)

Micronaut的处理方式有所不同,因此您无权访问要写入的流。您可以返回反应式类型,以将数据尽快提供给响应。

  

获取客户端IP

通常可通过主机标头或https://docs.micronaut.io/latest/api/io/micronaut/http/HttpRequest.html#getRemoteAddress--

获得

编辑:分块发送XML文件

@Get(uri = "/xml", produces = MediaType.TEXT_XML)
Flowable<String> getXml() {
    return Flowable.create(emitter -> {
        emitter.onNext("<<xml header>>");
        //do some work
        emitter.onNext("more xml");
        emitter.onNext("<<xml footer>>");
    }, BackpressureStrategy.BUFFER);
}

答案 2 :(得分:0)

您可以使用Filter来使用HTTP请求/响应

@Singleton
public class TraceService {

Flowable<Boolean> yourFilter(HttpRequest<?> request) {
  

Micronaut HTTP服务器支持以与传统Java应用程序中的Servlet过滤器类似但被动的方式将过滤器应用于请求/响应处理的功能。

     

过滤器可以支持以下用例:

     

传入HttpRequest的装饰

     

修改传出的HttpResponse