rest - Flutter:DateTime 作为改造方法中的参数; DateTime ISO 8061 序列化;改造日期iso8061格式

标签 rest flutter datetime retrofit dio

我想定义一个方法如下:

@GET("/users")
@Headers(<String, dynamic>{"Accept": "application/json", "Authorization": "Basic " + authKey})
Future<List<User>> getUsers(@Query("fromDate") DateTime from, @Query("toDate") DateTime to);

这样 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();
}

洞察力:

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( ... )
    )

这需要我们使用扩展方法证明的.toJson()方法。仅此而已。

关于rest - Flutter:DateTime 作为改造方法中的参数; DateTime ISO 8061 序列化;改造日期iso8061格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66399566/

相关文章:

api - 如何设计具有多个输入参数的 RESTful URL

mysql - CakePHP 3 休息 API

firebase - 如何为提供者设置登录屏幕过渡的动画?

flutter - 如何在 flutter 中隐藏星号格式的电话号码的半位数?

excel - VBA-Web 请求超时

rest - 使用 jaxrs+apache+eclipse 获取 rest api 时返回 404,静态 index.html 工作正常

firebase - 错误在Flutter中检索Firebase集合数时?

c# - 将时间戳附加到文件名

date - 是否有比 UTC 更 "Date"的替代 "ambiguous"数据类型?

c# - 我如何仅在 LINQ 查询中的日期时间中的日期上使用 group by