为了账号安全,请及时绑定邮箱和手机立即绑定

生成的 OpenAPI golang 客户端似乎无法正确处理日期?

生成的 OpenAPI golang 客户端似乎无法正确处理日期?

Go
侃侃无极 2023-03-07 17:10:58
我正在开发一个提供交易列表的 API。我正在用 Java/Kotlin Spring 编写它,但更喜欢将 golang 用于 CLI,因此我正在为其生成一个 golang 客户端。该 API 在 Swagger UI 中运行良好。科特林 API:@GetMappingfun listTransactions() : ResponseEntity<List<Transaction>> {    val transactions = ArrayList<Transaction>()    transactionRepository.findAll().mapTo(transactions) { fromEntity(it) }    return ResponseEntity.ok(transactions)}科特林对象:data class Transaction(        val id: Long,        val transactionDate: Date, // Java SQL date        val postedDate: Date?, // Java SQL date        val amount: BigDecimal,        val category: Category,        val merchant: Merchant,        val merchantDescription: String?)Golang 客户端对象:type Transaction struct {   Id *int64 `json:"id,omitempty"`   TransactionDate *time.Time `json:"transactionDate,omitempty"`   PostedDate *time.Time `json:"postedDate,omitempty"`   Amount *float32 `json:"amount,omitempty"`   Category *Category `json:"category,omitempty"`   Merchant *Merchant `json:"merchant,omitempty"`   MerchantDescription *string `json:"merchantDescription,omitempty"`}所有这一切似乎都是正确的。但是,当我使用 OpenAPI 客户端时,反序列化似乎无法正常工作:Error when calling `TransactionRouterApi.ListTransactions``: parsing time "\"2022-10-28\"" as "\"2006-01-02T15:04:05Z07:00\"": cannot parse "\"" as "T"Response from `TransactionRouterApi.ListTransactions`: [{0x140000aa218 0001-01-01 00:00:00 +0000 UTC <nil> <nil> <nil> <nil> <nil>}]我是否做错了什么导致反序列化失败?或者这是一个客户端错误(似乎值得怀疑,但谁知道呢)。我查看了我使用的生成参数和端点上可用的模式,它们看起来都是正确的。执行的脚本:openapi-generator-cli generate -g go -i http://localhost:8080/v3/api-docs
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

两种选择:

  1. 创建自定义类型并实现Unmarshaler日期字段的接口。

  2. 从 API 返回有效的 RFC 3339 日期/时间。


查看完整回答
反对 回复 2023-03-07
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号