Open hlouis opened 1 year ago
https://github.com/chenshuai2144/openapi2typescript/blame/b035170d8c5a6bea14616a87e1d7ce7b1390440a/src/serviceGenerator.ts#L178
在目前的178行,我们看到对required的处理是:
const required = 'required' in (schemaObject.properties[key] || {}) ? ((schemaObject.properties[key] || {}) as any).required : false;
也就是说对于嵌入的对象是通过这个properties定义内部是否有一个required的bool字段来控制的,但是对于OpenAPI和JsonSchema规范来说,一个字段是否required应该是放在和properties同级的required的数组中。
"schema": { "allOf": [ { "$ref": "#/components/schemas/Result" }, { "type": "object", "properties": { "data": { "type": "object", "properties": { "total": { "type": "integer", "title": "flow的总数" }, "flows": { "type": "array", "items": { "$ref": "#/components/schemas/FlowMeta" } } }, "required": [ "total", "flows" ], } }, "required": [ "data" ], } ] } }
所以上面的代码应该修改成:
const required = (schemaObject.required || []).includes(key)
想要了解一下,这样做是不是有什么特别的考虑?
你这个判断是 swagger2 的判断方法
https://github.com/chenshuai2144/openapi2typescript/blame/b035170d8c5a6bea14616a87e1d7ce7b1390440a/src/serviceGenerator.ts#L178
在目前的178行,我们看到对required的处理是:
也就是说对于嵌入的对象是通过这个properties定义内部是否有一个required的bool字段来控制的,但是对于OpenAPI和JsonSchema规范来说,一个字段是否required应该是放在和properties同级的required的数组中。
所以上面的代码应该修改成:
想要了解一下,这样做是不是有什么特别的考虑?