mi controller is:
[HttpGet]
public async Task<IActionResult> GetAll([FromQuery] QueryObject query)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
try
{
var stocks = await _stockRepository.GetAllAsync(query);
var stockDto= stocks.Select(s => s.ToStockDTO());
return Ok(stocks);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
then my Repository is:
public async Task<List<Stock>> GetAllAsync(QueryObject query)
{
var stocks = _context.Stocks.Include(c=>c.Comments).AsQueryable();
if(!string.IsNullOrWhiteSpace(query.CompanyName))
{
stocks= stocks.Where(s=>s.CompanyName.Contains(query.CompanyName));
}
if (!string.IsNullOrWhiteSpace(query.Symbol))
{
stocks = stocks.Where(s => s.Symbol.Contains(query.Symbol));
}
return await stocks.ToListAsync();
}
and my query objet with the parameters of filter is:
public class QueryObject
{
public string? Symbol { get; set; } =null ;
public string? CompanyName { get; set; }=null ;
}
my archive Program.cs is:
using api.Data;
using api.Models.Repository;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
//This section below is for connection string
builder.Services.AddDbContext<AplicationDbContext>(options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"));
});
// Add services
builder.Services.AddScoped<IStockRepository, StockRepository>();
builder.Services.AddScoped<ICommentRepository, CommentRepository>();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// Configurar el JSON serializador para evitar ciclos de referencia en las respuestas JSON
builder.Services.AddControllers().AddNewtonsoftJson(options =>
{
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
//
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
// Habilitar Swagger UI
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
"What could be missing for me not to be able to visualize my filter parameters?
I need help because I can't visualize my parameters on Swagger through a .NET Core web API."