Vert.x Web模块(九)

处理HTTP方法重写

许多公司和其他服务对它们允许外部使用的RESTHTTP方法施加了限制。有些是松散的,允许任何方法,大多数方法只允许一个小而得体的集合,有些则只允许GET和POST。这种限制的原因各不相同:浏览器或客户端的限制,或者是非常严格的公司防火墙。只有GET和POST的Web服务不能很好地表达REST思想。PUT、DELETE、OPTIONS等对于指定对资源执行的操作非常有用。为了解决这个问题,我们创建了X-HTTP-METHOD-OVERRIDE HTTP头作为解决方法。

通过使用GET/POST发送请求以及请求应该在X-HTTP-method-OVERRIDE HTTP头中真正处理的方法,服务器应该识别头并重定向到适当的方法。

Vert.x允许用户这样做,只需:

router.route().handler(MethodOverrideHandler.create());

router.route(HttpMethod.GET, "/").handler(ctx -> {
  // do GET stuff...
});

router.route(HttpMethod.POST, "/").handler(ctx -> {
  // do POST stuff...
});

因为这段代码将重定向请求,避免不必要的请求是明智的。所以最好是将MethodOverrideHandler作为第一个处理器。

另外,提醒一句:这可能会成为不受欢迎的人的攻击媒介!

为了缓解这种问题,MethodOverrideHandler默认带有安全降级策略。该政策规定,如果出现以下情况,X-HTTP-method-OVERRIDE中包含的方法可以覆盖原始方法:

  • 重写方法是幂等的;或
  • 重写方法是安全的,并且要重写的方法不是幂等的;或
  • 被推翻的方法是不安全的。

尽管我们不建议,Vert.x不会强迫你做任何事情。如果您希望允许任何覆盖,那么:

router.route().handler(MethodOverrideHandler.create(false));

router.route(HttpMethod.GET, "/").handler(ctx -> {
  // do GET stuff...
});

router.route(HttpMethod.POST, "/").handler(ctx -> {
  // do POST stuff...
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vert.x in Action》是一本关于Vert.x框架的参考书,详细介绍了Vert.x框架的使用和相关的技术概念。该书以深入浅出的方式讲解了Vert.x的核心概念、架构和高级特性。它适合有Java或其他编程语言基础的开发人员,通过学习本书可以了解Vert.x框架在应用开发中的应用场景和解决方法。 该书涵盖了Vert.x的核心模块,包括Verticles、Event Bus、Web、Messaging、Service Proxies等。通过实例和代码示例,读者可以学习如何构建响应式、高可伸缩性和高性能的应用程序。此外,还讨论了Vert.x与其他常用框架和技术的集成,如Spring Boot、RxJava和Docker等。 通过阅读《Vert.x in Action》,读者可以学习到以下知识: 1. 如何使用Verticles来构建可伸缩的应用程序。 2. 如何利用事件总线实现应用程序的异步通信和协作。 3. 如何设计和开发Web应用程序,包括使用Vert.x-Web进行路由和处理HTTP请求。 4. 如何使用消息传递机制实现应用程序之间的解耦。 5. 如何通过服务代理和反应式编程模型简化应用程序的开发和维护。 6. 如何进行应用程序的测试、部署和监控。 总之,《Vert.x in Action》是一本全面介绍Vert.x框架的权威参考书,适合希望学习和使用该框架的开发人员阅读。无论是初学者还是有经验的开发人员,通过本书的学习可以掌握Vert.x的核心概念和技术,从而构建优秀的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值