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

网站维护页面怎么做的网站内容建设要求 age06

网站维护页面怎么做的,网站内容建设要求 age06,遂宁市住房与城乡建设厅网站,中关村在线手机报价jersey 参数验证我最近加入了一个团队#xff0c;试图将一个完整的遗留系统转换为Java中的RESTful服务集。 他们决定将最新的2.x版本的Jersey用作REST容器#xff0c;这对我来说不是首选#xff0c;因为我不是JSR- *规范的忠实拥护者。 但是现在我必须承认#xff0c;JAX-R… jersey 参数验证 我最近加入了一个团队试图将一个完整的遗留系统转换为Java中的RESTful服务集。 他们决定将最新的2.x版本的Jersey用作REST容器这对我来说不是首选因为我不是JSR- *规范的忠实拥护者。 但是现在我必须承认JAX-RS 2.x的运行正确需要几乎零的样板代码支持功能的自动发现并且像其他现代框架一样更喜欢使用约定而不是配置。 由于该规范还很年轻因此很难找到具有一些可用代码的优秀教程和启动项目。 我在GitHub上创建了jersey2-starter项目该项目可用作您自己的生产就绪的RESTful服务的起点。 在本文中我将介绍如何实现和集成测试您自己的REST资源验证约束。 自定义约束 用Java编写REST时困扰我的问题之一是用注释乱扔您的类模型。 假设您要构建一个简单的Todo列表REST服务当使用Jacksonvalidation和Spring Data时您可以轻松地将其作为实体类结束 Document public class Todo {private Long id;NotNullprivate String description;NotNullprivate Boolean completed;NotNullprivate DateTime dueDate;JsonCreatorpublic Todo(JsonProperty(description) String description, JsonProperty(dueDate) DateTime dueDate) {this.description description;this.dueDate dueDate;this.completed false;}// getters and setters } 您的域模型现在几乎在所有地方都被混乱的注释有效地模糊了。 让我们看看如何使用验证约束 NotNull 。 有人可能会说您可以引入一些具有自己的验证规则的DTO层但是这与纯REST API设计对我来说是冲突的后者表示您在应映射到您的域类的资源上进行操作。 另一方面– Todo对象有效是什么意思 创建Todo 应提供说明和截止日期但是更新时会怎样 您应该能够更改描述到期日推迟和完成标志标记为完成中的任何一个但是您至少应提供其中之一作为有效的修改。 因此我的想法是引入自定义验证约束这些约束用于创建和修改 Target({TYPE, PARAMETER}) Retention(RUNTIME) Constraint(validatedBy ValidForCreation.Validator.class) public interface ValidForCreation {//...class Validator implements ConstraintValidatorValidForCreation, Todo {/...Overridepublic boolean isValid(Todo todo, ConstraintValidatorContext constraintValidatorContext) {return todo ! null todo.getId() null todo.getDescription() ! null todo.getDueDate() ! null;}} }Target({TYPE, PARAMETER}) Retention(RUNTIME) Constraint(validatedBy ValidForModification.Validator.class) public interface ValidForModification {//...class Validator implements ConstraintValidatorValidForModification, Todo {/...Overridepublic boolean isValid(Todo todo, ConstraintValidatorContext constraintValidatorContext) {return todo ! null todo.getId() null (todo.getDescription() ! null || todo.getDueDate() ! null || todo.isCompleted() ! null);}} } 现在您可以将验证注释移至REST端点的定义 POST Consumes(APPLICATION_JSON) public Response create(ValidForCreation Todo todo) {...}PUT Consumes(APPLICATION_JSON) public Response update(ValidForModification Todo todo) {...} 现在您可以从模型中删除那些NotNull 。 整合测试 集成测试通常有两种方法 测试是在与应用程序不同的JVM上运行的而该应用程序则部署在其他集成环境中 测试在设置块中以编程方式部署应用程序。 两者都有其优点和缺点但是对于足够小的服务我个人更喜欢第二种方法。 设置起来非常容易并且您只启动了一个JVM这使得调试非常容易。 您可以使用Arquillian之类的通用框架在容器环境中启动应用程序但是我更喜欢简单的解决方案而只是使用嵌入式Jetty。 为了使测试设置与100的生产相当我正在创建完整的Jetty的WebAppContext并且必须解决所有运行时相关性才能使Jersey自动发现正常工作。 这可以通过Arrinklian子项目Shrinkwrap解决的Maven 轻松实现 WebAppContext webAppContext new WebAppContext();webAppContext.setResourceBase(src/main/webapp);webAppContext.setContextPath(/);File[] mavenLibs Maven.resolver().loadPomFromFile(pom.xml).importCompileAndRuntimeDependencies().resolve().withTransitivity().asFile();for (File file: mavenLibs) {webAppContext.getMetaData().addWebInfJar(new FileResource(file.toURI()));}webAppContext.getMetaData().addContainerResource(new FileResource(new File(./target/classes).toURI()));webAppContext.setConfigurations(new Configuration[] {new AnnotationConfiguration(),new WebXmlConfiguration(),new WebInfConfiguration()});server.setHandler(webAppContext); 此Stackoverflow线程在这里启发了我很多 现在是该文章最后一部分的时候了参数化我们的集成测试。 由于我们要测试验证约束因此有许多要检查的边缘路径并使您的代码覆盖率接近100。 每个案例编写一个测试可能是一个坏主意。 在实用的JUnit解决方案中我最相信实用主义者团队的Junit Params 。 它非常简单并且具有用于创建提供程序的类似于JQuery的帮助程序的概念。 这是我的测试代码我也在这里使用构建器模式来创建各种Todos Test Parameters(method provideInvalidTodosForCreation) public void shouldRejectInvalidTodoWhenCreate(Todo todo) {Response response createTarget().request().post(Entity.json(todo));assertThat(response.getStatus()).isEqualTo(BAD_REQUEST.getStatusCode()); }private static Object[] provideInvalidTodosForCreation() {return $(new TodoBuilder().withDescription(test).build(),new TodoBuilder().withDueDate(DateTime.now()).build(),new TodoBuilder().withId(123L).build(),new TodoBuilder().build()); } OK足够的阅读知识随时可以克隆项目并开始编写REST服务 参考 在我们的JCG合作伙伴 Piotr Jagielski的“ 全栈JVM开发”博客中 在Jersey 2中集成测试自定义验证约束 。 翻译自: https://www.javacodegeeks.com/2014/03/integration-testing-custom-validation-constraints-in-jersey-2.htmljersey 参数验证
http://www.pierceye.com/news/573841/

相关文章:

  • 网站建设的色彩搭配做网站赚钱吗 怎么赚
  • 门头沟富阳网站建设西安企业电话
  • 电子商务网站建设概括湘潭专业seo优化推荐
  • 炫彩发光字制作免费网站动漫制作就业方向
  • 阿里巴巴可以做网站吗网站的可用性
  • 云虚拟主机怎么做2个网站装饰工程施工
  • 网站备案查询流程wordpress手机页面没有注册
  • 辽宁城乡建设集团官方网站精品课程网站建设
  • 威海 网站建设个人做网站可以盈利么
  • 机关网站源码网站建设 备案什么意思
  • 做理财的网站有哪些怎么弄数据库备份做网站
  • 网站不接入备案易企互联网站建设
  • 那种网站打不开北京网站建设找华网天下
  • 网站建设seo优化浙江网站名称怎么收录
  • 天津网站制作工具想自己做网站 有免费的吗
  • 宝塔织梦网站建设求网站备案照片
  • 聊城住房和城乡建设厅网站研发项目管理软件
  • 国投集团网站开发杭州网站界面设计
  • 做关于什么的网站莆田网站建设解决方案
  • 湖南长沙做网站那些网站可以做反链
  • 成都金牛网站建设公司高端网站配色
  • 做喜报的网站设计师的工作内容
  • 济南网站建设工作wordpress 资讯
  • 网站调用数据库平台公司名单
  • 移动网站怎么做成都设计公司名字
  • 杭州最好的网站设计公司服务器域名解析
  • 做试用网站的原理塘沽网吧开门了吗
  • 网站域名的作用古典网站源码
  • 做直播网站软件有哪些软件涿州网站建设有限公司
  • 易托管建站工具wordpress多个single