У меня есть следующий фрагмент кода, разработанный с использованием asp.net web api 2 и EntityFramework 6.
public class TestController : BaseApiController
{
private readonly ITestService _testService;
private readonly ICommonService _commonService;
private readonly IImageService _imageService;
public TestController(ITestService testService, ICommonService commonService, IImageService imageService)
{
_testService = testService;
_commonService = commonService;
_imageService = imageService;
}
[Route("test")]
public IHttpActionResult Get()
{
var resp = _testService.GetDetailsForLocation(locale);
return Ok(resp);
}
}
public class BaseApiController : ApiController
{
public string locale
{
get
{
if (Request.Headers.Contains("Accept-Language"))
{
return Request.Headers.GetValues("Accept-Language").First();
}
else
{
return string.Empty;
}
}
}
public string GetCookieId()
{
string value = string.Empty;
IEnumerable<CookieHeaderValue> cookies = this.Request.Headers.GetCookies("mycookie");
if (cookies.Any())
{
IEnumerable<CookieState> cookie = cookies.First().Cookies;
if (cookie.Any())
{
var cookieValue = cookie.FirstOrDefault(x => x.Name == "mycookie");
if (cookieValue != null)
value = cookieValue.Value.ToLower();
}
}
return value;
}
}
Я конвертирую существующую конечную точку restpi в конечную точку graphql, используя asp.net core 2 и graphql.net. В приведенном ниже методе в настоящее время я отправляю «en» в качестве значения, но я хочу передать значение локали, как это было сделано в случае asp.net web api 2 в вышеприведенной реализации.
Здесь я хотел бы узнать, каков наилучший способ прочитать заголовки запроса и передать значение в бизнес-код (т. Е. В данном случае в метод: GetDetailsForLocation ("en")
public class TestQuery : ObjectGraphType<object>
{
public TestQuery(ITestService testService)
{
Field<TestResultType>("result", resolve: context => testService.GetDetailsForLocation("en"), description: "Test data");
}
}
Может ли кто-нибудь помочь мне дать рекомендации по решению проблемы?