asp.Netcore 3.1 web api構成ノート
6721 ワード
1.web apiプロジェクトの作成
具体的にはhttps://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio
2.インタフェース記述ドキュメントを追加
NSwagは以下の機能を提供しています.
C#コピー
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(opt =>
opt.UseInMemoryDatabase("TodoList"));
services.AddMvc();
// Register the Swagger services
services.AddSwaggerDocument();
}
C#コピー
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
// Register the Swagger generator and the Swagger UI middlewares
app.UseOpenApi();
app.UseSwaggerUi3();
app.UseMvc();
}
Install-Package NSwag.AspNetCore
Startup.ConfigureServices
メソッドでは、登録に必要なSwaggerサービス:Startup.Configure
メソッドでは、生成されたSwagger仕様およびSwagger UIのためのミドルウェアのサービスを有効にする:http://localhost:/swagger
、Swagger UIを表示します.http://localhost:/swagger/v1/swagger.json
、Swagger仕様を参照してください.3.カスタムjson形式ブラシのサポート
コンポーネントのインストール
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson -Version 3.1.1
services.AddControllers()
.AddNewtonsoftJson(opt =>
{//
opt.SerializerSettings.ContractResolver =
new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
// Configure a custom converter
opt.SerializerSettings.Converters.Add(SerializerHelper.JsonTimeConverter());
});
public class SerializerHelper
{
public static JsonConverter JsonTimeConverter()
{
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter
{
DateTimeFormat = "yyyy'-'MM'-'dd HH:mm:ss"
};
return timeConverter;
}
}
4.処理異常
app.UseExceptionHandler("/error");
[Route("/error")]
public IActionResult Error()
{
var context = HttpContext.Features.Get();
Console.WriteLine("context.Error.StackTrace:" + context.Error.StackTrace);
return Problem(
detail: context.Error.StackTrace,
title: context.Error.Message,
statusCode: 500);
}
errorでメールの送信、ログの記録、戻り状態の設定などを設定できます.
5.ログ
nlogの使用https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-3
単一exeの場合、ルートディレクトリ、logパスを設定する必要があります.相対パスを設定する場合は、${basedir:processDir=true}パラメータを設定する必要があります.
var rootPath = Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
#if DEBUG
rootPath = System.AppDomain.CurrentDomain.BaseDirectory.ToString();
#endif
var logger = NLogBuilder.ConfigureNLog(Path.Combine(rootPath, "nlog.config")).GetCurrentClassLogger();
try
{
logger.Debug("init main");
CreateHostBuilder(args).Build().Run();
}
catch (Exception exception)
{
//NLog: catch setup errors
logger.Error(exception, "Stopped program because of exception");
throw;
}
finally
{
// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
NLog.LogManager.Shutdown();
}
6.ローカルキャッシュと分散キャッシュ
操作手順:
1.参照を追加:
Microsoft.Extensions.Caching.StackExchangeRedis
2.プロファイルの変更
"RedisDBSettings": {
"ConnectionString": "127.0.0.1:6379,connectTimeout=500,ssl=False,abortConnect=False",
"DatabaseName": "1",//db id
"InstanceName": "SBCC_Survey_" // key ,
}
3.startup拡張メソッドを追加し、構成を読み込み、注入する(実装はStackExchangeRedis)
//redis
#region snippet_AddStackExchangeRedisCache
services.AddStackExchangeRedisCache(options =>
{
options.Configuration = Configuration["RedisDBSettings:ConnectionString"];
options.InstanceName = Configuration["RedisDBSettings:InstanceName"];
});
#endregion
そして直接取得すればいいです.
private IDistributedCache _cache;(デフォルトではバイナリがサポートされており、拡張方法でバイナリ変換が可能で、汎用性がサポートされています)
参考になるhttps://www.cnblogs.com/OpenCoder/p/10287743.html
分散型Redisキャッシュ
Redisはメモリ内のデータストレージのオープンソースデータストレージであり、通常は分散キャッシュとして使用される.Redisをローカルで使用することもできるし、Azureが管理するASPを使用することもできる.NET Coreアプリケーション構成Azure Redisキャッシュ.
アプリケーションは、
Startup.ConfigureServices
の非開発環境のRedisCacheインスタンス(AddStackExchangeRedisCache)を使用してキャッシュ実装を構成します.C#コピー
services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost";
options.InstanceName = "SampleInstance";
});
ローカルコンピュータにRedisをインストールするには、次の手順に従います.
redis-server
公式ドキュメントの紹介:
https://docs.microsoft.com/zh-cn/aspnet/core/performance/caching/distributed?view=aspnetcore-3.1
公式demo:https://github.com/dotnet/AspNetCore.Docs/tree/master/aspnetcore/performance/caching/distributed/samples/3.x/DistCacheSample
7.mongodbデータベース操作
todo