<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          binder-swagger-javaSwagger API 框架

          聯(lián)合創(chuàng)作 · 2023-09-20 08:28

          `binder-swagger-java` 是一套簡易的 API 管理方案。它可以生成 swagger ui 可以瀏覽、交互的 API,還可以自動為沒有實現(xiàn)的接口/操作生成數(shù)據(jù)和響應。

           

          它如何工作的?

          我們在類的靜態(tài)塊中定義 API 元數(shù)據(jù)信息,在類掃描/加載時,這些數(shù)據(jù)被收集到一個全局的 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: 為什么使用靜態(tài)代碼塊而不是注釋來注冊/關(guān)聯(lián)操作的元數(shù)據(jù)信息?

          A:因為注釋不能滿足需求,注釋要求靜態(tài)定義的數(shù)據(jù)類型,而我們的項目很多按需生成的數(shù)據(jù)沒有定義 Java Bean。

           

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

          更多細節(jié)請訪問項目網(wǎng)站。

          瀏覽 16
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲国产一区二区三区 | 视频精品一区二区三区 | 99免费在线观看视频 | 亚洲日韩在线免费观看 | 97午夜福利|