当前位置: 首页 > news >正文

企业网站开发教学视频wordpress 实时表单

企业网站开发教学视频,wordpress 实时表单,平邑县门户网站,个人官方网站怎么建设spark rest我希望您今年Java来了#xff01; 今天#xff0c;我们将研究一个清新#xff0c;简单#xff0c;美观且实用的框架#xff0c;以Java编写REST应用程序。 它将非常简单#xff0c;甚至根本不会看起来像Java。 我们将研究Spark Web框架。 不#xff0c;它与Ap… spark rest 我希望您今年Java来了 今天我们将研究一个清新简单美观且实用的框架以Java编写REST应用程序。 它将非常简单甚至根本不会看起来像Java。 我们将研究Spark Web框架。 不它与Apache Spark不相关。 是的很遗憾他们使用相同的名字。 我认为理解该框架的最佳方法是构建一个简单的应用程序因此我们将构建一个简单的服务来执行数学运算。 我们可以这样使用它 请注意该服务正在本地主机上的端口4567上运行并且请求的资源为“ / 10 / add / 8”。 使用Gradle设置项目 apply plugin: java apply plugin: ideasourceCompatibility 1.8repositories {mavenCentral()maven { url https://oss.sonatype.org/content/repositories/snapshots/ }maven { url https://oss.sonatype.org/content/repositories/releases/ } }dependencies {compile com.javaslang:javaslang:2.0.0-RC1compile com.sparkjava:spark-core:2.3compile com.google.guava:guava:19.0-rc2compile org.projectlombok:lombok:1.16.6testCompile group: junit, name: junit, version: 4. }task launch(type:JavaExec) {main me.tomassetti.javaadvent.SparkServiceclasspath sourceSets.main.runtimeClasspath } 现在我们可以运行 。 / gradlew想法来生成IntelliJ IDEA项目 。 / gradlew测试以运行测试 。 / gradlew组装以构建项目 。 / gradlew启动以启动我们的服务 现在让我们认识Spark 您认为我们可以编写一个功能齐全的Web服务用不到25行Java代码执行基本的数学运算吗 没门 好吧再想想 // imports omittedclass Calculator implements Route {private MapString, Function2Long, Long, Long functions ImmutableMap.of(add, (a, b) - a b,mul, (a, b) - a * b,div, (a, b) - a / b,sub, (a, b) - a - b);Overridepublic Object handle(Request request, Response response) throws Exception {long left Long.parseLong(request.params(:left));String operatorName request.params(:operator);long right Long.parseLong(request.params(:right));return functions.get(operatorName).apply(left, right);} }public class SparkService {public static void main(String[] args) {get(/:left/:operator/:right, new Calculator());} } 在我们的主要方法中我们只是说当我们得到一个包含三个部分用斜杠分隔的请求时我们应该使用计算器路线这是我们唯一的路线。 Spark中的路由是接收请求处理请求并产生响应的单元。 我们的计算器就是神奇的地方。 它在请求中查找参数“ left”“ operatorName”和“ right”。 左右被解析为长值而operatorName用于查找操作。 对于每个操作我们都有一个函数Function2 LongLong然后将其应用于我们的值左和右。 酷吧 Function2是来自Javaslang项目的接口。 您现在可以启动该服务 ./gradlew启动还记得吗并进行播放。 我上次检查Java时比较冗长冗长缓慢……好吧它现在正在恢复。 好的但是测试呢 因此Java实际上可以非常简洁作为软件工程师我会庆祝一两分钟但是不久之后我就开始感到不安……这些东西没有经过测试 更糟糕的是它看起来根本无法测试。 逻辑在我们的计算器类中但是它接受一个Request并生成一个Response。 我不想实例化一个请求只是为了检查我的计算器是否按预期工作。 让我们重构一下 class TestableCalculator implements Route {private MapString, Function2Long, Long, Long functions ImmutableMap.of(add, (a, b) - a b,mul, (a, b) - a * b,div, (a, b) - a / b,sub, (a, b) - a - b);public long calculate(String operatorName, long left, long right) {return functions.get(operatorName).apply(left, right);}Overridepublic Object handle(Request request, Response response) throws Exception {long left Long.parseLong(request.params(:left));String operatorName request.params(:operator);long right Long.parseLong(request.params(:right));return calculate(operatorName, left, right);} } 我们只是将管道从请求中取出值与逻辑分开并将其放入自己的方法中 calculate 。 现在我们可以测试计算了。 public class TestableLogicCalculatorTest {Testpublic void testLogic() {assertEquals(10, new TestableCalculator().calculate(add, 3, 7));assertEquals(-6, new TestableCalculator().calculate(sub, 7, 13));assertEquals(3, new TestableCalculator().calculate(mul, 3, 1));assertEquals(0, new TestableCalculator().calculate(div, 0, 7));}Test(expected ArithmeticException.class)public void testInvalidInputs() {assertEquals(0, new TestableCalculator().calculate(div, 0, 0));}} 我现在感觉好多了我们的测试证明了这些东西是行得通的。 当然如果我们尝试除以零它将引发异常但是事实就是这样。 但是这对用户意味着什么 这意味着500。如果用户尝试使用一个不存在的操作会发生什么 如果值不是正确的数字怎么办 好的这似乎不是很专业。 让我们修复它。 错误处理功能风格 要解决这两种情况我们只需要使用Spark的一项功能即可我们可以将特定的异常与特定的路线进行匹配。 我们的路由将产生有意义的HTTP状态代码和正确的消息。 public class SparkService {public static void main(String[] args) {exception(NumberFormatException.class, (e, req, res) - res.status(404));exception(ArithmeticException.class, (e, req, res) - {res.status(400);res.body(This does not seem like a good idea);});get(/:left/:operator/:right, new ReallyTestableCalculator());} } 我们仍然要处理不存在的操作的情况这是我们将在ReallyTestableCalculator中进行的操作 。 为此我们将使用典型的函数模式我们将返回Either 。 Either是可以具有left或right值的集合。 左侧通常表示有关错误的某种信息例如错误代码或错误消息。 如果没有任何问题Either都将包含一个正确的值可能是各种各样的东西。 在本例中如果无法执行操作则将返回错误我们定义的类否则将以Long形式返回操作的结果。 因此我们将返回Either ErrorLong。 package me.tomassetti.javaadvent.calculators;import javaslang.Function2; import javaslang.Tuple2; import javaslang.collection.Map; import javaslang.collection.HashMap; import javaslang.control.Either; import spark.Request; import spark.Response; import spark.Route;public class ReallyTestableCalculator implements Route {private static final int NOT_FOUND 404;private MapString, Function2Long, Long, Long functions HashMap.ofAll(new Tuple2(add, (a, b) - a b),new Tuple2(mul, (a, b) - a * b),new Tuple2(div, (a, b) - a / b),new Tuple2(sub, (a, b) - a - b));public EitherError, Long calculate(String operatorName, long left, long right) {EitherError, Long unknownOp Either.Error, Longleft(new Error(NOT_FOUND, Unknown math operation));return functions.get(operatorName).map(f - Either.Error, Longright(f.apply(left, right))).orElse(unknownOp);}Overridepublic Object handle(Request request, Response response) throws Exception {long left Long.parseLong(request.params(:left));String operatorName request.params(:operator);long right Long.parseLong(request.params(:right));EitherError, Long res calculate(operatorName, left, right);if (res.isRight()) {return res.get();} else {response.status(res.left().get().getHttpCode());return null;}} } 让我们测试一下 package me.tomassetti.javaadvent;import javaslang.control.Either; import me.tomassetti.javaadvent.calculators.ReallyTestableCalculator; import org.junit.Test;import static org.junit.Assert.assertEquals;public class ReallyTestableLogicCalculatorTest {Testpublic void testLogic() {assertEquals(Either.right(10L), new ReallyTestableCalculator().calculate(add, 3, 7));assertEquals(Either.right(-6L), new ReallyTestableCalculator().calculate(sub, 7, 13));assertEquals(Either.right(3L), new ReallyTestableCalculator().calculate(mul, 3, 1));assertEquals(Either.right(0L), new ReallyTestableCalculator().calculate(div, 0, 7));}Test(expected ArithmeticException.class)public void testInvalidOperation() {Eitherme.tomassetti.javaadvent.calculators.Error, Long res new ReallyTestableCalculator().calculate(div, 0, 0);assertEquals(true, res.isLeft());assertEquals(400, res.left().get().getHttpCode());}Testpublic void testUnknownOperation() {Eitherme.tomassetti.javaadvent.calculators.Error, Long res new ReallyTestableCalculator().calculate(foo, 0, 0);assertEquals(true, res.isLeft());assertEquals(404, res.left().get().getHttpCode());}}结果 我们提供了可以轻松测试的服务。 它执行数学运算。 它支持四个基本操作但可以轻松扩展以支持更多操作。 处理错误并使用适当的HTTP代码400错误输入和404未知操作或值。 结论 当我第一次看到Java 8时我对新功能感到满意但并不十分兴奋。 但是几个月后我看到了基于这些新功能的新框架它们有可能真正改变我们用Java编程的方式。 Spark和Javaslang之类的东西正在发挥作用。 我认为现在Java可以保持简单而可靠同时变得更加敏捷和高效。 您可以在Spark教程网站或我的博客tomassetti.me上找到更多教程。 翻译自: https://www.javacodegeeks.com/2015/12/introduction-spark-next-rest-framework-java.htmlspark rest
http://www.zqtcl.cn/news/942246/

相关文章:

  • 网站怎么没有排名做义工旅行有哪些网站
  • 阳江房地产信息网官方网站创业网站开发要多少钱
  • 工业设计招聘信息网站常用的seo网站优化排名
  • 温岭市建设规划局网站网站规划与建设ppt
  • 龙岩网站建设较好的公司做网站销售的换工作
  • 潞城建设局网站建设网站服务器自营方式的特点
  • 西安网站seo公司东莞市专注网站建设怎么样
  • dede游戏网站模板如何做盆栽蔬菜网站
  • 江都建设网站网站开发技术介绍
  • 网站介绍视频怎么做网站建设优化服务
  • 可以左右滑动的网站有口碑的盐城网站建设
  • 360报危险网站注册界面设计
  • 不用淘宝客api如何做网站北京移动官网网站建设
  • 手表哪个网站做的好河北网站备案流程
  • 凡科做的网站推效果网站做seo第一步
  • 建设在线观看视频网站免费企业网站建设免费
  • 网站开发需要后台吗哪家建站公司好
  • 个人建设网站论文网站视频怎么做的
  • 不同类型的购物网站汉川网站建设
  • 网站开发需求文档范文广州公司网站托管
  • 网站制作公司官网首页撸撸撸做最好的导航网站
  • 网站建设毕业设计综述centos 安装wordpress lnmp
  • 济宁专业做网站网站建设中 html
  • 中国排名高的购物网站最新发布的手机2022
  • 备案的网站名与公司名称出国用哪个地图app好
  • 网站建设工作室图片文章资讯类网站
  • 深圳自助建站系统网站题目有哪些
  • 郑州做网站kuihuakeji软文发布的平台与板块
  • 一那个网站可以做一建题安全文化企业示范企业评价标准
  • 网站没有关键词收录phpstudy配置网站