【问题标题】:Is it possible to use Swagger with AspNetCore Odata?是否可以将 Swagger 与 AspNetCore Odata 一起使用?
【发布时间】:2018-07-25 20:29:28
【问题描述】:

昨天我搜索了如何在 Core Odata 上使用 swagger 的解决方案,我尝试了几个库但没有成功,它似乎目前还没有完全支持。

【问题讨论】:

标签: c# asp.net-core swagger odata nswag


【解决方案1】:

这个信息可能对某人有用。实际上,可以使用 NSwag 并从框中为 Odata Core 创建文档。有解决方法。

只需将 swagger 和 Odata 设置添加到 Startup.cs

     public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
                options.SerializerSettings.ContractResolver =
                    new Newtonsoft.Json.Serialization.DefaultContractResolver();
            });

            services.AddOData();
      //etc
        }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    var builder = new ODataConventionModelBuilder(app.ApplicationServices));           
    builder.EntitySet<Test>(nameof(Test));

    app.UseMvc(routebuilder =>
    {
        routebuilder.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
    });

    app.UseSwaggerUi(typeof(Startup).GetTypeInfo().Assembly,
        settings =>
        {
            settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
        });           
    app.UseMvc();
    //etc
 }

接下来用路由属性标记控制器,就像 WebApi 一样。注意:路由应该与 odata 不同。 将 [EnableQuery] 添加到您的 IQueryable 操作。注意2:您不能将 [FromODataUri] 用于 swagger docs Action 应将其标记为 [SwaggerIgnore]

[Produces("application/json")]
[Route("api/test")] 
public class TestController : Controller
{

    [HttpGet]
    [EnableQuery]
    public IQueryable<Test> Get()
    {
        return _testService.Query();
    }

    //etc
}

大摇大摆地跑!

【讨论】:

    猜你喜欢
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2016-04-01
    • 2011-01-20
    • 2018-08-11
    • 2021-08-05
    • 2019-03-18
    相关资源
    最近更新 更多