raml-for-jax-rs插件

简介

raml-for-jax-rs插件是mulesoft开发的,是实现被JAX-RS注解的java代码与Raml Api描述之间相互转换的工具。
其中包含jaxrs-to-raml和raml-to-jaxrs两个主要工程,分别实现一种转换过程。

设计原则

RAML生成JAX-RS

所有发行版本(Eclipse Plugin,Maven Plugin和Jar)的工作方式如下:

  • 生成接口,并在RAML定义改变的情况下重新生成接口
  • 一个接口被生成一个顶级resource,该接口下面的子接口称为sub-resouce被作为不同的方法定义在同一个接口下
  • 为每个资源操作创建响应对象包装器,以便指导实现者仅生成与RAML定义兼容的结果
  • 为不属于JAX-RS核心规范的http方法生成自定义注解(PATCH)
  • 对象基于代表 请求/响应 实体的json schemas来生成
  • 英语是接口和方法中常用的语言
当前支持
  • JAX-RS 1.1 和 2.0
  • @Pattern外,JSR-303注解都支持,因为Raml用的是ECMA 262/Perl 5模式,而javax.validation用的是Java模式,@Min/@Max支持对raml中定义的非小数最大最小值的限制
  • 模型对象基于JSON schemas生成,带有Jackson1,2或者Gson注解
  • 基于XML Schemas生成带有JAXB注解的结果
JAX-RS注解
  • Path
  • Consumes, Produces.
  • QueryParam, FormParam, PathParam, HeaderParam.
  • DELETE, GET, HEAD, OPTIONS, POST, PUT.
  • DefaultValue.
扩展注解

验证注解:

  • NotNull
  • Min
  • DecimalMin
  • Max
  • DecimalMax

支持方式

该插件支持以下几种使用方式

  • Maven 插件
  • eclipse插件
  • 命令行

Maven插件

这里我们着重对Raml to JAX-RS方式中Maven插件的使用进行介绍

RAML to JAX-RS

这个Maven插件用来基于raml Api生成JAX-RS注释的java接口,支持基于单一或多个RAML文件

Maven 组件

Maven 组件仓库地址
- https://repository-master.mulesoft.org/releases/ - release repository
- https://repository-master.mulesoft.org/snapshots/ - snaphots repository

使用方式

需要在Project中的Pom文件中增加以下plug-in内容, 例如:

<plugin>
<groupId>org.raml.plugins</groupId>
<artifactId>raml-jaxrs-maven-plugin</artifactId>
<version>1.3.4</version>
<configuration>
    <!-- Use sourcePaths if you want to provide a single RAML file or a list of RAML files -->
    <sourceDirectory>${basedir}/raml</sourceDirectory>
    <!-- Optionally configure outputDirectory if you don't like the default value: ${project.build.directory}/generated-sources/raml-JAX-RS -->
    <!-- Replace with your package name -->
    <basePackageName>com.acme.api</basePackageName>
    <!-- Valid values: 1.1 2.0 -->
    <jaxrsVersion>2.0</jaxrsVersion>
    <useJsr303Annotations>false</useJsr303Annotations>
    <!-- Valid values: jackson1 jackson2 gson none -->
    <jsonMapper>jackson2</jsonMapper>
    <removeOldOutput>true</removeOldOutput>
    <!-- Optionally set extensions to a list of fully qualified names of classes
    that implement org.raml.jaxrs.codegen.core.ext.GeneratorExtension -->
    <!-- for example:
    <extensions>
        <param>com.abc.AuthorizationAnnotationExtension</param>
        <param>com.abc.ParameterFilterExtension</param>
    </extensions>
    Custom annotator for json schema to pojo convertor
    <customAnnotator>com.abc.MyCustomAnnotator</customAnnotator>
    -->
</configuration>
<executions>
    <execution>
        <goals>
            <goal>generate</goal>
        </goals>
        <phase>generate-sources</phase>
    </execution>
</executions>
</plugin>
配置说明
SchemaMeanOptional
sourceDirectoryraml文件目录custom
sourcePathsraml文件路径集合custom
outputDirectory输出目录custom
basePackageName生成的基础包路径custom
removeOldOutput是否删除上一次的输出boolean
jaxrsVersionJAX-RS规范版本1.1 or 2.0
useJsr303Annotations是否使用JSR303规范boolean
jsonMapperjson与java映射规范jackson1 jackson2 gson none
extensions扩展对Resource的生成控制custom
customAnnotatorjson schema到pojo的定制化注解器custom
jsonMapperConfiguration对于json映射的配置“generateBuilders”,”includeHashcodeAndEquals”,”includeToString”,”useLongIntegers”
skip跳过插件的执行boolean
modelPackageName设置model对象所在的目录名称(basepackage+modelpackage,如果schema中已经指定了javapackage,则此配置不生效)custom
generateClientProxy是否生成客户端代理(只生成proxy,覆盖model和resource)boolean
mapToVoidtrue:如果resource定义的方法的response没有body,生成的java method返回值将会是void,不是wrapper responseboolean
useTitlePropertyForSchemaNames将title属性作为schema的名称(没试出来)boolean
asyncResourceTrait【待定】
ignoredParameters定义忽略参数列表,忽略指定的resource query参数custom

运行mvn raml:generate时,RAML定义的内容就会被处理生成相应的Java代码,同样在运行mvn compile 或者 mvn package命令时这个插件也会执行。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值