kos*_*cki 2 rest datetime retrofit flutter dio
我想定义一个方法如下:
@GET("/users")
@Headers(<String, dynamic>{"Accept": "application/json", "Authorization": "Basic " + authKey})
Future<List<User>> getUsers(@Query("fromDate") DateTime from, @Query("toDate") DateTime to);
Run Code Online (Sandbox Code Playgroud)
这样DateTime
参数就被序列化为 ISO8061格式,输出查询如下所示:
[获取] https://address.com/users?fromDate=2021-02-21T12:00:00.000Z&toDate=2021-02-27T12:00:00.000Z
我已经在使用 Flutter Retrofit lib (内部使用 Flutter dio)。
我怎样才能做到这一点?
只需使用如下扩展方法即可。Flutter 内置了 8061 DateTime 序列化!
extension Iso8061SerializableDateTime on DateTime {
String toJson() => this.toIso8601String();
}
Run Code Online (Sandbox Code Playgroud)
洞察力:
Retrofit 在 *.g.dart 文件中生成以下方法:
@override
Future<List<User>> getUsers(from, to) async {
final queryParameters = <String, dynamic>{
r'fromDate': from?.toJson(),
r'toDate': to?.toJson()
};
final _data = <String, dynamic>{};
final _result = await _dio.request<List<dynamic>>('/orders',
queryParameters: queryParameters,
options: RequestOptions( ... )
)
Run Code Online (Sandbox Code Playgroud)
这需要我们用扩展方法.toJson()
证明的方法。就这样。
归档时间: |
|
查看次数: |
1079 次 |
最近记录: |