我认为这是一个 NSwag 或 NSwagStudio 问题,但我没有足够的经验来知道我是否使用错误,或者 NSwag 中是否存在错误或我正在使用的 Swagger 2.0 文档有问题。
我正在使用 NSwagStudio 13.6.1.0 为 Salesforce OCAPI Shop API 生成 C# 客户端。表示order_search_request
属性的类型query
作为没有属性的空类出现。但是 Swagger 文档声明了 的几个子类型query
,其中一些确实具有属性:
"query": {
"$ref": "#/definitions/query",
"description": "The query to apply",
"x-sub_types": {
"nested_query": "#/definitions/nested_query",
"filtered_query": "#/definitions/filtered_query",
"text_query": "#/definitions/text_query",
"match_all_query": "#/definitions/match_all_query",
"term_query": "#/definitions/term_query",
"bool_query": "#/definitions/bool_query"
}
}
起初我假设这些x-sub_types
应该作为 的子类生成Query
,但事实并非如此。但是根据请求正文应该包含的内容的非 Swagger 文档,似乎Query
应该具有这些子类型之一,而不是其中之一:
{
"query" :
{
"text_query": { "fields": ["customer_email"], "search_phrase":"example@non.existing.com" }
},
"select" : "(**)",
"sorts" : [{"field":"customer_name", "sort_order":"asc"}]
}
由于 NSwag 生成部分类,我也许可以为Query
自己添加必要的字段。但这真的是最好的解决方案吗?我想知道是否有可能让 NSwag 首先做正确的事情,或者 Swagger 文档是否错误地描述了 API。另一个明显的可能性,特别是考虑到x-
前缀,是x-sub_types
Salesforce 发明的一些非标准的东西。