Вчера я искал решение, как использовать swagger на Core Odata, я попробовал несколько библиотек, но безуспешно, похоже, что в настоящее время он не полностью поддерживается.
Можно ли использовать Swagger с AspNetCore Odata?
comment
Проблема Github: github.com/RSuter/NSwag/issues/730#issuecomment-410293504
- person Rico Suter   schedule 03.08.2018
Ответы (1)
Может эта информация кому-нибудь пригодится. На самом деле можно использовать NSwag и создавать документацию для Odata Core из коробки. Есть обходной путь.
Просто добавьте настройки swagger и Odata в Startup.cs.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version[Produces("application/json")]
[Route("api/test")]
public class TestController : Controller
{
[HttpGet]
[EnableQuery]
public IQueryable<Test> Get()
{
return _testService.Query();
}
//etc
}
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
}
Затем отметьте Controller с атрибутом маршрута, как это было бы с WebApi. Примечание: маршрут должен отличаться от одаты. Добавьте [EnableQuery] в действие IQueryable. Примечание 2: вы не можете использовать [FromODataUri] для документов swagger. Действие с ним должно быть помечено как [SwaggerIgnore].
[Produces("application/json")]
[Route("api/test")]
public class TestController : Controller
{
[HttpGet]
[EnableQuery]
public IQueryable<Test> Get()
{
return _testService.Query();
}
//etc
}
Получить чванство бежать!
person
Svetlana Gurskaya
schedule
25.07.2018