可以生成客户端代码,以便模型的类名具有完整的名称空间作为前缀?
那应该避免相同的类名冲突。
例
com.foo.MyClass
Run Code Online (Sandbox Code Playgroud)
和
it.foo.MyClass
Run Code Online (Sandbox Code Playgroud)
到现在我得到的是MyClass和MyClass2这与其说是有意义的。
应该是最好有,在名称冲突的情况下,ComFooMyClass和ItFooMyClass。
我找到了一个使用自定义 SchemaNameGenerator 而不是自定义 TypeNameGenerator 的解决方案(我没有包信息)。
internal class MySchemaNameGenerator : DefaultSchemaNameGenerator, ISchemaNameGenerator
{
public override string Generate(Type type)
{
string retValue = base.Generate(type);
// Quite ugly but do fix the concept
if (retValue.Equals("BaseClass"))
{
retValue = type.FullName.Replace(".","_");
}
return retValue;
}
}
Run Code Online (Sandbox Code Playgroud)
始终通过设置进行设置:
app.UseSwaggerUi(typeof(WebApiApplication).Assembly, new SwaggerUiSettings
{
SchemaNameGenerator = new MySchemaNameGenerator(),
...
Run Code Online (Sandbox Code Playgroud)
这样我就得到了更有意义的东西
"/api/test/models/base": {
"get": {
"tags": [
"Test"
],
"operationId": "Test_Get2",
"parameters": [],
"responses": {
"200": {
"description": "",
"schema": {
"$ref": "#/definitions/WebApi_Models_BaseClass"
},
"x-nullable": true
}
}
}
},
"/api/test/models/extended": {
"get": {
"tags": [
"Test"
],
"operationId": "Test_Get3",
"parameters": [],
"responses": {
"200": {
"description": "",
"schema": {
"$ref": "#/definitions/ExtendedClass"
},
"x-nullable": true
}
}
}
},
"/api/test/modelli/base": {
"get": {
"tags": [
"Test"
],
"operationId": "Test_Get4",
"parameters": [],
"responses": {
"200": {
"description": "",
"schema": {
"$ref": "#/definitions/WebApi_Modelli_BaseClass"
},
"x-nullable": true
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
即使多态性的鉴别器属性需要基本名称“BaseClass”。
让我更新 shadowsheep 对更新版本的 NSwag 的回答:
services.AddSwaggerDocument(cfg => { cfg.SchemaNameGenerator = new CustomSchemaNameGenerator(); });
Run Code Online (Sandbox Code Playgroud)
和:
internal class CustomSchemaNameGenerator : ISchemaNameGenerator
{
public string Generate(Type type)
{
return type.FullName.Replace(".", "_");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |