Я строю очень простой отдых api. Все мои конечные точки под определенным контроллером требуют объекта типа QueryContext. Этот объект является «упрощенной» версией HttpRequest.Ввести данные маршрута с помощью промежуточного программного обеспечения
В настоящее время я использую фабрику, принимающую HttpRequest и возвращающую объект типа QueryContext.
public interface IQueryContextFactory
{
QueryContext Create(string query, HttpRequest request);
}
internal class HttpRequestQueryContextFactory : IQueryContextFactory
{
public QueryContext Create(string query, HttpRequest request)
{
if (string.IsNullOrEmpty(query))
throw new ArgumentNullException(nameof(query));
if (request == null)
throw new ArgumentNullException(nameof(request));
return new QueryContext
{
Method = request.Method,
QueryString = string.Concat(query, request.QueryString),
Parameters = request.Query.ToDictionary(x => x.Key, x => x.Value.ToString().Replace("\"", string.Empty)),
Headers = request.Headers.ToDictionary(x => x.Key, x => x.Value.ToString())
};
}
}
Тогда я называю этот завод из моей конечной
[HttpGet]
public IActionResult Process(string query)
{
(...)
var ctx = _contextFactory.Create(query, Request);
}
Это рекомендуется использовать промежуточное программное обеспечение, чтобы добавить QueryContext к маршрутизации данных? Это я мог бы получить в качестве параметра?
Я подойду к этому подходу, так как легче провести единый тест! – Seb