REST API / запросы

RsqlParserNet

Парсер RSQL/FIQL-выражений для REST API на .NET

RsqlParserNet version on NuGetRsqlParserNet downloads on NuGetMITC#
net10.0

Возможности

  • Типизированный AST с диагностикой
  • Allowlist-предикаты для IQueryable<T> (LINQ)
  • Биндинг filter/sort/page в ASP.NET Core
  • Асинхронная постраничность EF Core
  • Документация параметров в OpenAPI / Swashbuckle / NSwag

Установка

bash
dotnet add package RsqlParserNet

Быстрый старт

csharp
using RsqlParserNet;

// GET /products?filter=status==active;price=gt=100&sort=-createdAt
if (RsqlParser.TryParse("status==active;price=gt=100", out var query, out var errors))
{
    // walk the typed AST, or apply an allowlisted LINQ profile
    var predicate = profile.ApplyRsql(query);
    var page = await dbContext.Products
        .Where(predicate)
        .ToRsqlPageAsync(page: 1, pageSize: 25);
}
else
{
    return Results.ValidationProblem(errors.ToValidationErrors());
}

Основные методы

RsqlParser.TryParseРазбор фильтра в AST
ApplyRsqlAllowlist-предикат для LINQ
ToRsqlPageAsyncПодсчёт и материализация страницы

Пакеты семейства

READMEgithub.com/ai-iskuzhin/RsqlParserNet
Загружаем README из репозитория…