当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

binder-swagger-java

Swagger API 框架
授权协议 BSD
开发语言 Java
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 国产
投 递 者 陶星波
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

`binder-swagger-java` 是一套简易的 API 管理方案。它可以生成 swagger ui 可以浏览、交互的 API,还可以自动为没有实现的接口/操作生成数据和响应。

 

它如何工作的?

我们在类的静态块中定义 API 元数据信息,在类扫描/加载时,这些数据被收集到一个全局的 swagger 对象中,这样,当收到获取 swagger.json 的请求时,程序就可以用这个 swagger 对象直接响应了。

binder-swagger description

 

 

示例项目

下载了项目源码以后,进入 example/java-jaxrs 目录

> mvn clean
> mvn jetty:run-war


然后浏览器打开:http://localhost:8002
就可以看到效果了 ^^

 

 

如何使用?

// in `PetResource.java`
static Mapping petStatus = $(text(oneOf(Arrays.asList("available", "pending", "sold"))))
    .desc("pet status in the store").example("available").$$;
static Mapping pet = $(mapping(
    field("id", $(vLong()).desc("pet id").example(gen("petId").or(gen(() -> faker.number().randomNumber()))).$$),
    field("name", $(text(required())).desc("pet name").$$),
    field("category", attach(required()).to($(mapping(
          field("id", vLong(required())),
          field("name", text(required()))
    )).refName("category").desc("category belonged to").$$)),
    field("photoUrls", $(list(text())).desc("pet's photo urls").example(Arrays.asList("http://example.com/photo1")).$$),
    field("tags", $(list(text())).desc("tags for the pet").example(Arrays.asList("tag1", "tag2")).$$),
    field("status", petStatus)
)).refName("pet").desc("pet info").$$;

static SharingHolder sharing = sharing().pathPrefix("/pet").tag("pet");

static {
    sharing.operation(GET, "/{petId}")
        .summary("get pet by id")
        .parameter(param(longv()).in("path").name("petId").example(1l))
        .response(200, response(pet))
        .response(404, response().description("pet not found"))
        .notImplemented() // MARK IT `notImplemented`, THEN `binder-swagger-java` WILL GENERATE MOCK RESPONSE FOR YOU
    ;
}
@GET
@Path("/{petId}")
public Response getPetById(@PathParam("petId") String petId) throws NotFoundException, SQLException {
...

0. 把 binder-swagger-java 依赖加入项目

1. (如上)定义/注册你的 API 操作

2. 补充其他 swagger info

3. 在 web.xml 里配置 SwaggerFilter

 

就这样,可以用了。

 

 

Q & A

Q: 为什么使用静态代码块而不是注释来注册/关联操作的元数据信息?

A:因为注释不能满足需求,注释要求静态定义的数据类型,而我们的项目很多按需生成的数据没有定义 Java Bean。

 

--------------------------------------------------

更多细节请访问项目网站。

  • binder-swagger-java v0.6.1 发布了,是 Swagger API 框架。 改进内容: 主要修复了一个 ref-model 的 bug:在 request/response 里引用了已定义的 model 后,输出 swagger.json 的 paths 部分包含的仍然是完整的 model 定义,而不是 $ref: #definitions/xxxModel这样的引用描述。

  • Binder-swagger-java v0.5.0 发布了,这一版的主要更新有: 增加 ref 支持 增加 重用 支持 更多的助手方法 注:保持了向前兼容,现有应用代码不受影响。 只要提供合适的 swagger.json,swagger ui 就能动态生成 web 客户端,让你可以在线浏览 API,构建/发送请求并获得响应。 Binder-swagger-java 的目的就是帮助构建 sw

  • 本文来自GitHub 上 Awesome - java 系列的资源整理。 awesome-java是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。 目录 Java资源大全中文版 古董级工具 构建工具 字节码操作 集群管理 代码分析 编译器生成工具 外部配置工具 约束满足问题求解程序 持续集成 CS

  • Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。伯乐在线已经把 awesome-java 资源列表翻成中文后发布于 ImportNew。 Awesome

  • 1,出现问题 Failed to start bean ‘outputBindingLifecycle’; nested exception is java.lang.IllegalArgumentException: A default binder has been requested, but there is no binder available 解决办法 删掉这两个依赖 <depend

 相关资料
  • Binder Binder 主要有以下两个特征: 不会处理错误事件 确保绑定都是在给定 Scheduler 上执行(默认 MainScheduler) 一旦产生错误事件,在调试环境下将执行 fatalError,在发布环境下将打印错误信息。 示例 在介绍 AnyObserver 时,我们举了这样一个例子: let observer: AnyObserver<Bool> = AnyObserver

  • 用法 对于使用RabbitMQ绑定器,您只需要使用以下Maven坐标将其添加到您的Spring Cloud Stream应用程序: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-rabbit</artifactId> </dependency>

  • Property Binder 是一个 Java 类库,用来处理 properties 文件的,支持多值的key。可通过 Annotation 对 Properties 文件进行解析处理,例如下面代码: public interface ExamplePICA { String unadorned(); @BoundProperty("unconverted.property")

  • form-binder 是一个容易使用和定制的微型数据绑定和校验框架。 它有如下特点: 非常轻量,总共才 900 来行代码(框架 + 内置扩展) 容易使用,使用过程没有冗余代码,所见及所得 高度可定制,你可以扩展几乎每一个执行点 容易实现扩展,每个扩展接口都只是一个 FunctionN 的别名 不可变性,让你可以安全的共享/(嵌套)复用 mapping定义对象 form-binder 一开始是为我

  • 用法 对于使用Apache Kafka绑定器,您只需要使用以下Maven坐标将其添加到您的Spring Cloud Stream应用程序: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-kafka</artifactId> </dependen

  • form-binder-java 是一个容易使用和定制的微型数据绑定和校验框架,是 form-binder 的 Java 移植版。用 Java 8 实现,运行时要求 Java 8。 它有如下特点: 非常轻量,总共才 1500 来行代码(框架 + 内置扩展) 容易使用,使用过程没有冗余代码,所见及所得 高度可定制,你可以扩展几乎每一个执行点 容易编写扩展,每个扩展接口都只是一个 FunctionN