私はSwaggerを使用して残りのAPIをテストしています。エンティティクラスのプロパティの1つに日付フィールドがあり、これにはyyyy-mm-dd形式の日付が必要ですが、Swaggerモデルスキーマはこのフィールドを日付時刻ではなく日付時刻として表示しています日付フィールド。したがって、日付と時刻とゾーンが表示されます。この日時を日付フィールドに変換するにはどうすればよいですか?
私はJavaエンティティクラスTimeEntry.Javaを持っています。そのプロパティの1つはDateです。これは次のようになります。
@ApiModelProperty(required = true)
@JsonFormat(pattern = DATE_FORMAT)
private Date date;
このフィールドの場合、swagger UIモデルスキーマでは、フィールドdateは "date": "2016-01-08T22:34:22.337Z"と表示されますが、これは "date": "2016-01-08"として必要です。
私は以下を試しました:
1。
@ApiModelProperty(required = true, dataType="date")
@JsonFormat(pattern = DATE_FORMAT)
private Date date;
2.このコード(OverrideConvertorクラスをオーバーライドする)をたどろうとしましたが、swagger-core 1.3バージョンのmvn repoが見つかりませんでした。 1.5バージョンのみが利用可能です https://github.com/swagger-api/swagger-core/wiki/overriding-models
助けてください。
Java.util.Date
の問題(実際の問題の1つ)は、これが実際には日付時刻であり、swaggerがそれを正しく検出することです。私は@JsonFormat
もこれの回避策であることを理解しています-swaggerはその型検出中の注釈をサポートしていません。
日付タイプを適切に処理するには、3つのオプションがあります。
1)データ型としてJodaのLocalDate
を使用します。 private LocalDate date
を宣言した場合、正しく表示されます。
2)上記と同じように、Java8のLocalDate
を使用します。
3)注釈でタイプを検出するときに上記のいずれかを使用するようにswaggerに指示しますが、プロパティはタイプJava.util.Date
のままにします。
@ApiModelProperty(required = true, dataType = "org.joda.time.LocalDate")
その後、スキャン時にswaggerはこれをdate
形式の文字列として検出します。
私のチームメイトが修正を見つけました。以前はspringfox 2.2.2バージョンを使用していたのに、springfoxバージョンを2.3.0にアップグレードする必要がありました。その古いバージョンでは、swaggerの@ApiModelPreportyには何も実行していなかった「example」という属性があります。バージョン2.3.0バージョンから、この「例」が機能し始めました。したがって、Springfoxのバージョンを2.3.0にアップグレードした後は、次のようにするだけで済みます。
@ApiModelProperty(required = true,example = "2016-01-01")
@JsonFormat(pattern = DATE_FORMAT)
private LocalDate date;
以下は、この情報を見つけたリンクです。