Carapacik / swagger_parser

Dart package that takes an OpenApi definition file and generates REST clients based on retrofit and data classes for your project.
https://pub.dev/packages/swagger_parser
MIT License
87 stars 33 forks source link

model file name conflict if different paths use same property key #235

Open zhuscat opened 1 month ago

zhuscat commented 1 month ago

Steps to reproduce

  1. use the swagger file provided below
  2. use Web Interface to generate dart code

Expected results

In my swagger file, both /foo and bar's response have a property data, and the generated code can distinguish between them

Actual results

only one Data model is created

image

image

image

Your OpenApi snippet

{
    "info": {
        "title": "An API",
        "version": "v1"
    },
    "openapi": "3.1.0",
    "components": {
        "schemas": {},
        "parameters": {}
    },
    "paths": {
        "/foo": {
            "get": {
                "responses": {
                    "200": {
                        "description": "Foo",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "code": {
                                            "type": "number"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "name"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "code",
                                        "message",
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "/bar": {
            "get": {
                "responses": {
                    "200": {
                        "description": "Bar",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "code": {
                                            "type": "number"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "title": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "title"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "code",
                                        "message",
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

Code sample

Code sample ```dart [Paste your code here] ```

Logs

Logs ```console [Paste your logs here] ```

Dart version and used packages versions

Dart version ```console [Paste your output here] ```
Packages version ```console [Paste your output here] ```