Spring Boot Webアプリケーションの拡張-RESTFulインタフェースをカプセル化してデータを返す
3673 ワード
RESTFulインタフェースを提供する場合、これらのインタフェースから返されるデータは、呼び出し元に固定フォーマットで提供されることが望ましい場合があります.以下、戻りデータが固定jsonフォーマットにカプセル化されている例を示します.
データおよび構成クラスを返す
戻りデータクラスは汎用型を使用して異なるオブジェクトを含み、エラーコード、エラー情報、現在の時間の3つのフィールドがあり、lombokを使用してgetterとsetterを省略します.
クラスの構成@Configuration注記これは構成クラスであることを示し、 @Beanは、実際にはFastJsonHttpMessageConverterのインスタンスであり、「アプリケーション/json」または「アプリケーション/json;charset=UTF-8」のデータ型を返す変換のみをサポートするHttpMessageConvertersインスタンスの作成を表します.以前に追加した依存項目spring-cloud-starter-aliba-sentinelとsentinel-datasource-nacosはいずれもfastjson依存を含んでいるため、今回の変更では新しい依存項目を追加する必要はなく、上記の2つの依存項目はfastjsonの参照を1つだけ保持することができます. @RestControllerAdviceはaopブロックを構成し、「com.example.quickstart.controller」パッケージの下をブロックするコントローラを指定します.戻りデータを書くときに判断し、戻りタイプがCommonJsonResponseクラスのインスタンスまたはMediaTypeが私たちが追加したコンバータでサポートしているタイプであれば、直接戻ったり包装したりしますが、他のタイプでは処理しません.
以上の2つのクラスを追加したら、comを呼び出します.example.quickstart.Controllerパッケージの下にあるRESTFulインタフェースの場合、デフォルトで「アプリケーション/json」またはproduces=「アプリケーション/json」を使用してデータ型の戻りを示す場合、戻り情報は次のような形式で返されます.
これにより,RESTFulインタフェースに対してデータを返すパッケージを簡単に実現した.
データおよび構成クラスを返す
戻りデータクラスは汎用型を使用して異なるオブジェクトを含み、エラーコード、エラー情報、現在の時間の3つのフィールドがあり、lombokを使用してgetterとsetterを省略します.
@Data
public class CommonJsonResponse {
public CommonJsonResponse() { }
public CommonJsonResponse(T respBody) { this.respBody = respBody; }
private String errorCode = "";
private String errorMsg = "";
private T respBody;
public String getTimestamp() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(JSON.DEFFAULT_DATE_FORMAT));
}
}
クラスの構成
@Configuration
public class WebConfig {
@Bean
public HttpMessageConverters customConverters() {
//FastJsonHttpMessageConverter FastJsonConfig charset UTF-8
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON,
MediaType.APPLICATION_JSON_UTF8));
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(SerializerFeature.PrettyFormat, // json
SerializerFeature.WriteDateUseDateFormat);//
converter.setFastJsonConfig(config);
return new HttpMessageConverters(converter);
}
@RestControllerAdvice("com.example.quickstart.controller")
static class CommonJsonResponseResponseAdvice implements ResponseBodyAdvice
以上の2つのクラスを追加したら、comを呼び出します.example.quickstart.Controllerパッケージの下にあるRESTFulインタフェースの場合、デフォルトで「アプリケーション/json」またはproduces=「アプリケーション/json」を使用してデータ型の戻りを示す場合、戻り情報は次のような形式で返されます.
{
"errorCode":"",
"errorMsg":"",
"respBody":{
"age":19,
"birthday":"2000-04-01",
"usercode":"001",
"username":"test user"
},
"timestamp":"2019-11-17 21:18:23"
}
これにより,RESTFulインタフェースに対してデータを返すパッケージを簡単に実現した.