kentico-kontent - 如何在 Kentico Kontent .NET Delivery Client 中记录 HttpClient 请求?
问题描述
您如何在此处记录 Kentico Kontent .NET 交付 API 的 HTTP 请求:https ://github.com/Kentico/kontent-delivery-sdk-net
具体来说,我正在寻找的是如何将 HTTP Get 请求记录到 delivery.kentico.ai(您从中检索内容 JSON 的端点)。
解决方案
HttpClient
您可以丰富并注入DeliveryClient
.
丰富:
public class LoggingHandler : DelegatingHandler
{
public LoggingHandler(HttpMessageHandler innerHandler, Microsoft.Extensions.Logging.ILogger logger)
: base(innerHandler)
{
Logger = logger;
}
public Microsoft.Extensions.Logging.ILogger Logger { get; }
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
Logger.LogInformation(request.Method + " " + request.RequestUri);
HttpResponseMessage response = await base.SendAsync(request, cancellationToken);
Logger.LogInformation(response.StatusCode + " " + response.Content.Headers);
return response;
}
}
使用例如 Serilog
services.AddLogging(builder =>
{
// Add Serilog
builder.AddSerilog(new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.File("logs\\log.log", rollingInterval: RollingInterval.Day)
.CreateLogger());
});
var serviceProvider = services.BuildServiceProvider();
var logger = serviceProvider.GetRequiredService<ILogger<Startup>>();
HttpClient httpClient = new HttpClient(new LoggingHandler(new HttpClientHandler(), logger));
var deliveryOptions = new DeliveryOptions();
Configuration.GetSection(nameof(DeliveryOptions)).Bind(deliveryOptions);
注入:
var deliveryClient = DeliveryClientBuilder
.WithOptions(_ => deliveryOptions)
.WithHttpClient(httpClient)
.Build();
其他资源:
推荐阅读
- python - 将 django 过滤器编译成变量并在运行时执行?
- javascript - 在不刷新网页的情况下为进度条设置动画
- sql - Sql 触发器在可以引用之前更新表
- string - 在 Alteryx 中将填充字符串转换为固定十进制
- rest - 验证 REST API 的 HTTP POST 请求正文
- python - 测试 Django-Rest 自定义字段
- python - python,找到两个不相等列表之间的区别
- mongodb - 无法使用现有索引对 mongodb 集合进行分片。获取“找不到分片键的有效索引”
- c++11 - 如果构造函数取值,为什么我需要移动构造函数
- python-3.x - pip - 安装特定的软件包版本不起作用