OpenAPI со службой IAsyncEnumerable RESTFulC#

Место общения программистов C#
Ответить
Anonymous
 OpenAPI со службой IAsyncEnumerable RESTFul

Сообщение Anonymous »

Может ли кто-нибудь предоставить инструкции или, еще лучше, пример того, как OpenAPI будет сначала документировать, а затем генерировать клиентский код Javascript и C# для следующей службы RESTful: -

Код: Выделить всё

    [HttpGet]
public async IAsyncEnumerable yieldLastName(string inName, [EnumeratorCancellation]CancellationToken cancellationToken)
{
if (string.IsNullOrWhiteSpace(inName))
{
Console.WriteLine("Illeagal Parameter. inName is mandatory.");
yield break;
}

// alter database [AdventureWorks2022] set ALLOW_SNAPSHOT_ISOLATION on;
TransactionOptions txnOpts = new TransactionOptions() { IsolationLevel = IsolationLevel.Snapshot };

List namesSelect = new List();

SqlParameter searchName = new SqlParameter("LastName", System.Data.SqlDbType.Char);
searchName.Value = inName + "%";

var sql = @"
select
LastName,
count(*) as hitRate
from
Person.Person P
where
LastName like @LastName
group by
LastName
";

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, txnOpts, TransactionScopeAsyncFlowOption.Enabled))
{
using (SqlConnection cxn = new SqlConnection(connStr))
{
SqlCommand cmd = new SqlCommand(sql, cxn);
cmd.Parameters.Add(searchName);
cmd.CommandTimeout = 120000;
SqlDataReader reader = null!;
Boolean hasRows = false;

try
{
await cxn.OpenAsync(cancellationToken);
reader = await cmd.ExecuteReaderAsync(cancellationToken);
hasRows = await reader.ReadAsync(cancellationToken);
}
catch (TaskCanceledException ex) when (ex.CancellationToken == cancellationToken) { }

while (!cancellationToken.IsCancellationRequested && hasRows)
{
string lastName = "";
int hitRate = 0;

if (!reader.IsDBNull(0))
{
lastName = reader.GetString(0);
}
hitRate = reader.GetInt32(1);

yield return new
{
LastName = Uri.EscapeDataString(lastName),
HitRate = hitRate
};

try
{
hasRows = await reader.ReadAsync(cancellationToken);
}
catch (TaskCanceledException ex) when (ex.CancellationToken == cancellationToken) { }

//                   await Task.Delay(100);  // Slow down the Demo
}
}
scope.Complete();
}
}
Полный рабочий пример можно найти здесь. Вам необходимо загрузить копию базы данных AdventureWorks и использовать VisualStudio для ее запуска.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ul-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»