私は非常に単純な残りの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