SpringBoot整合Swagger(七)@ApiModel()註解一通百通 | Java隨筆記

語言: CN / TW / HK

theme: scrolls-light

「這是我參與11月更文挑戰的第23天,活動詳情檢視:2021最後一次更文挑戰


相關文章

Java隨筆記:Java隨筆記


前言

  • 俗話說,磨刀不誤砍柴工,前面的內容主要是對Swagger進行配置。
  • 今天要講解的內容才是Swagger實際使用的實體配置,還有介面的配置。
  • 畢竟我們一直強調的是前後端聯調,那麼怎麼樣讓前端一眼就看得懂我們的介面呢?

一、實體配置

1.1、實體配置案例

  • 首先建立學生實體類StudentResponse

    • @Data @ApiModel(value = "學生類") public class StudentResponse { ​    @ApiModelProperty(value = "姓名")    private String name;    @ApiModelProperty(value = "年齡")    private int age;    @ApiModelProperty(value = "愛好")    private String like; }
  • Controller修改返回值為StudentResponse

    • @RestController public class SwaggerTestController { ​    @RequestMapping(value = "test-swagger",method = RequestMethod.GET)    public StudentResponse dyTest(){        return new StudentResponse();   } ​ }
  • 重啟測試點選model檢視

    • image-20211125222641389.png
  • 這樣的話,前端對我們的返回值每個的說明都清清朗朗的!

  • 麻麻再也不用擔心前端看不懂返回引數啦~

1.2、@ApiModel()註解

  • 既然知道有這麼個註解可以對我們的返回值提供說明文件,那麼這個註解究竟是什麼?可以設定哪些引數呢?別急,下面我們慢慢道來。

  • 老規矩,點進去看看,這個註解有哪些引數?分別設定下看看有什麼效果

    • @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface ApiModel {    String value() default ""; ​    String description() default ""; ​    Class<?> parent() default Void.class; ​    String discriminator() default ""; ​    Class<?>[] subTypes() default {}; ​    String reference() default ""; }

    • 解釋說明:

  • 多引數設定:

    • 新建課程類CourseResponse
    • @ApiModel(value = "課程類") @Data public class CourseResponse { ​    @ApiModelProperty(value = "課程")    private String course; }
    • @Data @ApiModel(value = "學生類",description = "這是類的詳細描述資訊呀",parent = CourseResponse.class,subTypes = CourseResponse.class) public class StudentResponse{ ​    @ApiModelProperty(value = "姓名")    private String name;    @ApiModelProperty(value = "年齡")    private int age;    @ApiModelProperty(value = "愛好")    private String like; ​    @ApiModelProperty()    private CourseResponse perResponse; } ​
  • 再次重啟看看效果:

    • image-20211125225242897.png
  • 總結如下:

    • value屬性:這個屬性,提供的是類的一個備用名。如果我們不設定,那麼預設情況下,將使用的是class類的名字。
    • description屬性:對於類,提供一個詳細的描述資訊
    • parent屬性:這個屬性,描述的是類的一些父類的資訊。
    • discriminator屬性:這個屬性解釋起來有些麻煩,因為這個類主要是體現出了斷言當中。
    • subTypes屬性:舉個例項,如果我們此時有一個父類Animal。同時,對於這個父類,我們的系統中有這個類的子類CatDogPig等。如果我們在我們的父類上,通過這個屬性,指定了我們想要使用的子類的話,那麼在生成Swagger的文件的話,會自動的展示的是Animal這個屬性,但是在屬性的欄位中,會顯示出子類的一些獨有的屬性,其實在這裡,是不推薦使用的。因為這樣會讓別人認為,這些子類獨有的屬性,也是父類才有的。
  • 關於discriminator這個屬性,容我後面單獨出個斷言文章再來填坑。。因為我現在也不大會。。
  • 十一點了哇靠!明日再戰!
  • 明日預告:@ApiModelProperty()詳解。

路漫漫其修遠兮,吾必將上下求索~

如果你認為i博主寫的不錯!寫作不易,請點贊、關注、評論給博主一個鼓勵吧~hahah