HttpMate简介

没有人愿意编写不良代码。 没有人会想到“我要创建最纠结和最不可读的代码,并确保它不可扩展且难以修改或浏览”,从而开始了应用程序开发。 首先要有良好的意愿,甚至可能要牢记所有Clean Code和SOLID原则。 但是,折衷方案通常以所涉及的外部依赖关系的数量为基础,开始快速蔓延和倍增。

令人羡慕的是,我们没有找到任何框架使我们能够开发Web应用程序,并良心宣称其业务逻辑不依赖于基础HTTP服务器,持久层或(反)序列化机制(也在DDD中称为“基础结构代码”)。

如果您也觉得自己不再开发应用程序,而是继续“集成”和“集成”框架,与它的恶魔抗争,并且从没有时间来使用实际的业务逻辑。 如果您还只是因为发布了新版本的框架而对无休止的重构感到厌倦。 如果您不确定要使用哪个批注,并且对使用的HTTP框架的入侵性感到坦白,那么HttpMate适合您。

它是非侵入性的,灵活的和超可扩展的。 HttpMate为您提供3种处理HTTP请求的模式-UseCase驱动的,低级HTTP和事件驱动的请求处理,以及混合这些模式以充分利用功能丰富的框架。

没有更多的理由,让我们看一些代码示例。

低级HTTP请求处理

final HttpMate httpMate = HttpMate.aLowLevelHttpMate().get("/api/hello", (httpRequest, httpResponse) -> {final Optional<String> name = httpRequest.queryParameters().getQueryParameter("name");httpResponse.setBody("Hello " + name.orElse("World"));httpResponse.setStatus(OK);}).build();

本文使用HttpMate的低级HTTP构建器,它只是探讨了可能性的表面。
您可以轻松地为任何path / http方法组合注册处理程序。 在处理程序lambda中,您可以使用请求和响应对象,处理程序可以根据需要变得复杂。
请查看存储库的示例部分,以获取有关低级API的更多信息。

您可能已经看到其他所有HTTP框架都提供了一种编写少量请求处理程序的简便方法,尽管这是介绍框架语法的好方法,也是一种出色的营销工具,但任何现实生活中的挑战都不仅仅是“只需通过函数调用处理请求”。 全世界都迫切需要一个HTTP框架,该框架将在请求处理和业务逻辑之间提供适当的抽象层,并允许您在重要的事情上不妥协-干净的体系结构和可扩展性。

UseCase示例

HttpMate允许您“仅将业务逻辑发布为HTTP端点”。 让我们探讨一下发送电子邮件以证明这一点的用例。

我们尚不知道HTTP端点的外观,但是我们知道我们需要一个Email对象来表示电子邮件的详细信息:

  • 发件人
  • 接收者
  • 学科
  • 身体

我们需要返回,假设每发送一封电子邮件都会有一个回执:

  • 追踪号码
  • 日期

并且我们有一个负责发送电子邮件的类,看起来像这样:

public class SendEmailUseCase {...public Receipt sendEmail(final Email email) { ...}...
}

现在,您已经可以使用HttpMate构建器来发布该用例-假设您已经决定了哪个URL和哪种HTTP方法将负责向用户提供此UseCase:

final HttpMate useCaseDrivenHttpMate = HttpMate.anHttpMateConfiguredAs(UseCaseDrivenBuilder.USE_CASE_DRIVEN).post("/api/sendEmail", SendEmailUseCase.class).mappingRequestsAndResponsesUsing(mapMate()...).build();

第一部分是不言自明的:在POST上调用SendEmailUseCase到“ / api / sendEmail”。

还有“ SendEmailUseCase怎么得到一个有效的Email实例?” 聪明的读者可能会问。

确实,这是一个有效的问题,它是此示例中最复杂的技术细节以及魔鬼隐藏的位置。 为了使本文的重点放在HttpMate上并使其易于阅读,我们要求另一位同伴与该魔鬼作斗争。 我们将在另一篇文章中谈论那个勇敢的伴侣。

默认情况下,HttpMate使用UseCase类的空默认构造函数对其进行初始化。 也就是说,通过向构建器添加调用,可以轻松地将HttpMate配置为使用任何依赖项注入机制。 以下示例演示了如何使用Google Guice:

final HttpMate useCaseDrivenHttpMate = HttpMate.anHttpMateConfiguredAs(UseCaseDrivenBuilder.USE_CASE_DRIVEN).post("/api/sendEmail", SendEmailUseCase.class).mappingRequestsAndResponsesUsing(mapMate()).configured(toCreateUseCaseInstancesUsing(INJECTOR::getInstance)).build();

查看此github存储库以获取SendEmailUseCase的更详细示例。

最后的话

有很多框架可以提供HTTP终结点配置,但是,大多数情况下,精美的演示无法经受住现实的考验。 我们希望创建一些既易于配置又可以直观地为您的应用程序开发提供支持的工具,为您提供完成干净的代码和体系结构的工具,并为您的用例奠定良好的基础。

不仅如此! 还记得我是如何告诉您的,这只是探索可能性的表面吗? HttpMate和我们正在研究的其他“伙伴”一起提供了更多功能:websocket,事件驱动的HTTP方法,正确完成多部分请求,处理请求和响应,验证序列化和反序列化等。请继续关注有关Mate的更多文章家庭!

我们很高兴听到您的反馈并收到您的贡献,因此请签出HttpMate和Happy Coding的GitHub存储库!

翻译自: https://www.javacodegeeks.com/2019/08/introducing-httpmate.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rs485转rs232串口转换器常见的故障剖析

在实际应用中&#xff0c;rs485串口、rs232串口可能会用于同一个传输线路上&#xff0c;但这两个接口的电气特性不一致&#xff0c;数据不能从这两个串口中相互传输或是rs232串口功能不足需要额外用到rs485串口&#xff0c;这两种情况都可以使用rs485转换器。 rs485转rs232串口…

TDMoverIP是什么?tdmoverip产品特性介绍

tdmoverip伪线路仿真产品&#xff0c;也称为IP电路仿真器或反向网桥。接下来就由飞畅科技的小编来为大家详细讲解下TDMoverIP及其产品特性&#xff0c;一起来看看吧&#xff01; tdmoverip简介 该系列基于TDM over IP技术&#xff0c;实现端到端电路仿真(PWE3)&#xff0c;符合…

java用i/o查看文件_Java文件I / O基础

java用i/o查看文件Java 7引入了java.nio.file包&#xff0c;以提供对文件I / O的全面支持。 除了许多其他功能之外&#xff0c;该软件包还包括Files类&#xff08;如果您已经使用此类&#xff0c;则可以在这里停止阅读&#xff09;。 文件包含许多静态方法&#xff0c;可在处理…

PCM复用设备和PDH设备的区别介绍

首先PCM设备和PDH设备是完全不同的两者设备。PCM是综合业务接入设备&#xff0c;PDH设备是光传输设备。接下来就由飞畅科技的小编来为大家详细介绍下PCM复用设备和PDH设备的区别&#xff0c;一起来看看吧&#xff01; 数字信号是对连续变化的模拟信号进行抽样、量化和编码产生…

定义资源

在Fielding的论文中 &#xff0c;资源被描述为&#xff1a; “可以命名的任何信息”……“文档或图像&#xff0c;临时服务&#xff08;例如&#xff0c;“洛杉矶今天的天气”&#xff09;&#xff0c;其他资源的集合&#xff0c;非虚拟对象&#xff08;例如&#xff0c;人&am…

E1 PCM复用设备能当程控交换机用吗?

E1 PCM复用设备能当程控交换机用吗&#xff1f;这个问题在平时与用户沟通中发现&#xff0c;发现有不少用户认为E1 PCM复用设备可以当程控交换机使用&#xff0c;不仅能实现电话线远端延伸&#xff0c;还可以实现电话机交换功能。 其实这个观点是错误的&#xff0c;E1 PCM复用…

PCM设备能在公网使用吗?

正如标题所言&#xff0c;PCM设备能否在公网使用吗&#xff1f;首先我们可以了解一下公网的概念。“公网”也可以理解为“外网”&#xff0c;就是指公共的网络&#xff0c;用户可以使用这个网络相互访问对方。 其实&#xff0c;笔者认为“PCM能在公网使用”或“PCM不能在公网使…

日月神话_常见的Java神话

日月神话这些问题在任何面试中都可能太过高级而无法提出&#xff0c;因为它们可能会使候选人推迟。 不管怎样&#xff0c;他们可能会在您自己的时间练习。 误解1&#xff09;System.exit&#xff08;0&#xff09;阻止最终被调用 为什么这样的代码 System.setSecurityManager…

PCM设备是做什么的? PCM作用是什么?

PCM可以提供用户从2M到155M速率的数字数据专线业务&#xff0c;也可以提供话音、图象传送、远程教学等其他业务。那么&#xff0c;PCM设备是做什么的? PCM作用是什么&#xff1f;接下来我们就跟随飞畅科技的小编一起来看看吧&#xff01; PCM的含义&#xff1a; 1、PCM&…

Iceberg:浅析基于Snapshot的事务过程

MVCC事务&#xff08;乐观锁&#xff09; 我们知道&#xff0c;Iceberg基于Snapshot&#xff08;快照机制&#xff09;实现了乐观无锁地数据并发读写能力&#xff08;MVCC&#xff0c;Multi Versions Concurrency Controll&#xff09;&#xff0c;默认提供了快照级别的事务隔…

关于“最终”的最终决定

在Java中&#xff0c;过度使用final感觉就像是SHOUTING。 在很多时候它已经过时且不合适。 Java和JavaScript 这主要是关于Java中的final关键字&#xff0c;但是我对JavaScript中与之对应的const看法略有变化。 我可以认为const是一件好事&#xff0c;而final是一件坏事&#…

PCM设备在电网系统中的应用介绍

近年来&#xff0c;随着我国社会经济的快速发展和电力通信行业的不断进步&#xff0c;通信网络技术和网络系统不断完善和改进的同时&#xff0c;网络系统运行过程中也出现了很多的问题&#xff0c;要对其进行优化&#xff0c;否则可能影响电力通信网络的正常运行电力通信网络系…

PCM设备在雷达通信系统应用

PCM设备系统是目前国内企业最常用的综合接入通信设备&#xff0c;PCM设备所具优势众多&#xff0c;因此它能成为目前企业最常用的通信传输接入设备之一&#xff0c;而且在类似雷达通信系统等重要行业中广泛应用着。 PCM设备利用标准的E1数据传输通道&#xff0c;采用PCM制式&a…

ejb的maven_针对新手的Java EE7和Maven项目-第3部分-定义ejb服务和jpa实体模块

ejb的maven从前面的部分恢复 第1部分 第2部分 我们在第三部分继续介绍&#xff0c;我们已经有一个父pom&#xff0c;并且已经为我们的war模块定义了pom。 在我们的原始设置中&#xff0c;我们定义了我们的应用程序将包含一个ejb jar形式的服务jar。 这是我们的Enterprise Jav…

PCM设备终端烧毁板卡是什么原因?

最近&#xff0c;有新客服反映他们之前在某家设备厂家买了PCM设备&#xff0c;老是会烧毁终端板。所以另外选择了我们飞畅科技。那么&#xff0c;PCM设备终端烧毁板卡是什么原因呢&#xff1f;接下来飞畅科技的小编就来为大家具体分析下PCM设备终端烧毁板卡的原因&#xff0c;一…

全部隐藏!

在较早的文章中 &#xff0c;我写了以下几句话&#xff1a; 在面向对象的代码库中&#xff0c;该工具包应尽可能离散。 使用开发套件的次数越多&#xff0c;您的代码实际面向对象的次数就越少&#xff0c;或者您的抽象并不是最好的。 。 我认为有必要详细说明这一点&#xff0…

E1 PCM设备的主要特点介绍

E1 PCM设备是目前国内企业最常用的综合接入通信设备&#xff0c;它利用标准的E1数据传输通道&#xff0c;采用PCM制式&#xff0c;直接提供语音、数据、图像等多种用户接口。接下来飞畅科技的小编来为大家详细介绍下E1 PCM设备的主要特点&#xff0c;一起来看看吧&#xff01; …

docker集群_使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署...

docker集群Docker非常适合在单个节点上运行隔离的容器。 但是&#xff0c;大多数软件系统都在多个节点上运行&#xff0c;因此&#xff0c;除了Docker之外&#xff0c;我们还需要某种方法来指定哪些容器应在哪些节点上运行。 我要解决的特定问题如下&#xff1a;我有两个Scala…

PCM信号是什么信号?

PCM信号是模拟信号呢&#xff0c;还是数字信号呢&#xff1f;当然是数字信号啦&#xff01;PCM的完整定义是&#xff1a;将模拟信号的抽样量化值变换成代码称为脉冲编码调制&#xff08;PCM设备&#xff09;。 在光纤通信系统中&#xff0c;光纤中传输的是二进制光脉冲“0”码…

SDH光传输设备是什么?SDH设备特点介绍

SDH光传输设备是一种&#xff0c;将复接、线路传输以及交换功能融合为一体的、并且由统一网管系统操作的综合信息传送网络。SDH光传输设备&#xff0c;他可实现网络有效管理、能实时业务监控、能动态网络维护、不同厂商设备间的互通等多项功能。 SDH光传输设备能大大提高网络资…