现在我正在开发一个ASP.Net Web API并使用Swashbuckle作为其文档。 我知道Swashbuckle在内部使用Swagger-UI,我知道我们可以通过注入我们的css或javascript文件来修改布局,甚至可以更改index.html的布局。
我为Swagger-UI https://github.com/jensoleg/swagger-ui找到了一个很好的主题,并尝试实现它,但无法使其有效。特别是当我想注入bootstrap.js时。无论如何,我可以完全改变Swashbuckle Swagger UI实现,这样我就可以使用该回购中的解决方案吗?
答案 0 :(得分:9)
当然可以 - 分两步完成。
1)在程序集中包含文件Index.html作为嵌入式资源。例如,假设您的web api项目名为“Contosco.Api”,Index.html将位于此项目的“/Content/Index.html”下。
2)用你自己的
覆盖swagger UI主html页面[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration.EnableSwagger(c => {
// configure swagger
})
.EnableSwaggerUi(c => {
// beware - the Contosco.Api.Content.Index.html has to match your project paths :)
c.CustomAsset("index", thisAssembly, "Contosco.Api.Content.Index.html");
});
}
}
答案 1 :(得分:2)
您只需下载.zip
文件夹,解压缩并包含到您的项目中即可。
在SwaggerConfigre.cs
中,您不再需要进行配置。
只需将模板放入文件夹Swagger
,当您访问{domain}/swagger
时,它就会点击index.html
。 (不需要更改构建对嵌入式资源的操作,内容很好)
答案 2 :(得分:1)
我可以按照这里的简单步骤https://swagger.io/docs/swagger-tools/#swagger-ui-documentation-29
使用最新的swagger-ui答案 3 :(得分:0)
对于.NET Core项目,解决方案与@OndrejSvejdar的(正确)答案有些不同:
在将index.html添加为嵌入式资源之后,您必须在Startup.cs中将以下行添加到 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//...
app.UseSwaggerUI(c =>
{
c.IndexStream = () => GetType().GetTypeInfo().Assembly.GetManifestResourceStream("Your.Default.Namespace.Subfolder.Swagger_Custom_index.html");
});
//...
}
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Retrieve the map and initial extent from XML layout
mMapView = (MapView) findViewById(R.id.map);
// Enable map to wrap around date line.
mMapView.enableWrapAround(true);
String rasterPath = Environment.getExternalStorageDirectory().getPath() + "/raster/test.tif";
FileRasterSource rasterSource;
try {
rasterSource = new FileRasterSource(rasterPath);
}catch (IllegalArgumentException ie) {
Log.d(TAG, "null or empty path");
} catch (FileNotFoundException fe) {
Log.d(TAG, "raster file doesn't exist");
} catch (RuntimeException re) {
Log.d(TAG, "raster file can't be opened");
}
RasterLayer rasterLayer = new RasterLayer(rasterSource);
mMapView.addLayer(rasterLayer);
该过程的所有详细信息都可以在这里找到:https://stackoverflow.com/a/51043251/430742