ASPでWeb APIを作成する方法.NETとMongoDB
このチュートリアルでは、ASP . NETでWeb APIを作成する方法を学びます.NETとMongoDB.ムービーデータベース上でCRUD操作を可能にするAPIを作成します.
何がMongoDBですか?
Visual Studio 2022 Postman MongoDB MongoDB Compass データベースの作成
MongoDBコンパスを起動します. をクリックして“接続”ボタンをローカルサーバーに接続します. サーバーに接続したら、「データベースを作成」ボタンをクリックして新しいデータベースを作成します. ダイアログで、データベース名をMovieSDBに設定し、コレクション名をMovieSectionに設定します. データベースを生成するボタンをクリックします. ビジュアルスタジオ2022を起動します. file -> new ->プロジェクトに移動します. を選択します.次のボタンをクリックします. プロジェクトの名前をMovieSapiに設定します. 絹篩で篩うたよう.フレームワークとしてNET 6とHttpsを使用して構成を選択解除し、[作成]ボタンをクリックしてプロジェクトを生成します. MongoDBのインストール。ネットドライバ
Visual StudioでnugetパッケージマネージャーUIを開きます. MongoDBの検索ドライバの選択とインストール.
MongoDBに接続するには、接続文字列、データベース名、およびコレクション名のような詳細が必要です.これらの詳細は、アプリケーション構成ファイルに保存します.
💡 データベースの接続文字列を取得するには、MongoDBコンパスから切断し、接続文字列がアプリケーションのホームウィンドウに表示されます.
アプリケーションでこのセクションを読むには、オプションパターンを使用します.MoviesDatabaseSettingsという名前の新しいクラスを追加します.
プログラムで.CSは、Webアプリケーションがインスタンス化された後、依存関係インジェクションコンテナにMoviesDatabaseSettingsクラスを登録します.
モデルの作成
idプロパティは、BSONID属性でプライマリキーとしてマークされます. MongoDBは、ObjectID構造体の主キーを格納し、MongoDBに文字列からObjectIDへの変換を行う必要があることを通知するには、idプロパティも属性bson表現で修飾されます.
新しいクラスを追加し、次のコードを貼り付けます.
依存性インジェクションコンテナでサービスを登録します.
CRUD操作のエンドポイントの作成
アプリケーションのデバッグを開始するか、F 5キーを押します. Webブラウザで表示されるURLをコピーします. ランチポストマン. HTTPリクエストとしてポストを選択する新しいリクエストを作成します. アドレスバーで、URLをペーストして、/API/movieを加えてください. 本体セクションで、次のJSONをペイロードとして貼り付けます.
ボタンをクリックします. 応答として200のステータスコードを得るべきです. ハッピーコーディング!
何がMongoDBですか?
MongoDBはドキュメントベースのNOSQLデータベースです.MongoDBは、テーブル内のデータを格納するリレーショナルデータベースとは異なり、データをコレクションにまとめたドキュメントとして格納します.
工具
データベースの作成
私は、ローカルコンピュータでMongoDBで働くつもりです.MongoDBサーバーのインスタンスをインストールするには、次のリンクを実行します.
Install MongoDB
If you don't want to use MongoDB on your local machine, you can always use MongoDB Atlas. MongoDB Atlas is a database as a service, and you can try it for free.
If you don't want to use MongoDB on your local machine, you can always use MongoDB Atlas. MongoDB Atlas is a database as a service, and you can try it for free.
ASPを作成するNETアプリケーション
MongoDBのインストール。ネットドライバ
これは公式です.MongoDBのためのネットドライバ、それはMongoDBに接続するのに役立ちます.
構成
MongoDBに接続するには、接続文字列、データベース名、およびコレクション名のような詳細が必要です.これらの詳細は、アプリケーション構成ファイルに保存します.
"MoviesDatabaseSettings": {
"ConnectionString": "Your connection string to MongoDB",
"DatabaseName": "MoviesDb",
"MoviesCollectionName": "Movies"
}
アプリケーションでこのセクションを読むには、オプションパターンを使用します.MoviesDatabaseSettingsという名前の新しいクラスを追加します.
public class MoviesDatabaseSettings
{
public string ConnectionString { get; set; } = string.Empty;
public string DatabaseName { get; set; } = string.Empty;
public string MoviesCollectionName { get; set; } = string.Empty;
}
ASP .このクラスに「MoviesDatabaseSettings」セクションをマップします.プログラムで.CSは、Webアプリケーションがインスタンス化された後、依存関係インジェクションコンテナにMoviesDatabaseSettingsクラスを登録します.
builder.Services.Configure<MoviesDatabaseSettings>(builder.Configuration.GetSection("MoviesDatabaseSettings"));
Make sure, you install the following Nuget package: Microsoft.Extensions.Options
モデルの作成
以下のような新しいクラスを追加します.
public class Movie
{
[BsonId]
[BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)]
public string Id { get; set; }
public string Title { get; set; }
public int Year { get; set; }
public string Summary { get; set; } = null;
public List<string> Actors { get; set; }
}
public class Movie
{
[BsonId]
[BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)]
public string Id { get; set; }
public string Title { get; set; }
public int Year { get; set; }
public string Summary { get; set; } = null;
public List<string> Actors { get; set; }
}
サービスのCRUD操作の作成
新しいクラスを追加し、次のコードを貼り付けます.
public class MoviesService
{
private readonly IMongoCollection<Movie> _movies;
public MoviesService(IOptions<MoviesDatabaseSettings> options)
{
var mongoClient = new MongoClient(options.Value.ConnectionString);
_movies = mongoClient.GetDatabase(options.Value.DatabaseName)
.GetCollection<Movie>(options.Value.MoviesCollectionName);
}
public async Task<List<Movie>> Get() =>
await _movies.Find(_ => true).ToListAsync();
public async Task<Movie> Get(string id) =>
await _movies.Find(m => m.Id == id).FirstOrDefaultAsync();
public async Task Create(Movie newMovie) =>
await _movies.InsertOneAsync(newMovie);
public async Task Update(string id, Movie updateMovie) =>
await _movies.ReplaceOneAsync(m => m.Id == id, updateMovie);
public async Task Remove(string id) =>
await _movies.DeleteOneAsync(m => m.Id == id);
}
MongoClientは、データベース操作の実行に責任があります.依存性インジェクションコンテナでサービスを登録します.
builder.Services.AddSingleton<MoviesService>();
MoviesserviceはサービスがMongoClientに依存するので、Singletonとして登録されます、それはSingletonとしてMongoClientを使うことを勧められます.CRUD操作のエンドポイントの作成
プログラムを更新します.以下のようになります.
using MoviesAPI.Data;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<MoviesDatabaseSettings>(builder.Configuration.GetSection("MoviesDatabaseSettings"));
builder.Services.AddSingleton<MoviesService>();
var app = builder.Build();
app.MapGet("/", () => "Movies API!");
app.MapGet("/api/movies", async(MoviesService moviesService) => await moviesService.Get());
app.MapGet("/api/movies/{id}", async(MoviesService moviesService, string id) =>
{
var movie = await moviesService.Get(id);
return movie is null ? Results.NotFound() : Results.Ok(movie);
});
app.MapPost("/api/movies", async (MoviesService moviesService, Movie movie) =>
{
await moviesService.Create(movie);
return Results.Ok();
});
app.MapPut("/api/movies/{id}", async(MoviesService moviesService, string id, Movie updatedMovie) =>
{
var movie = await moviesService.Get(id);
if (movie is null) return Results.NotFound();
updatedMovie.Id = movie.Id;
await moviesService.Update(id, updatedMovie);
return Results.NoContent();
});
app.MapDelete("/api/movies/{id}", async (MoviesService moviesService, string id) =>
{
var movie = await moviesService.Get(id);
if (movie is null) return Results.NotFound();
await moviesService.Remove(movie.Id);
return Results.NoContent();
});
app.Run();
作成、読み取り、更新、および削除のアクションは、ポスト、get、put、deleteなどのHTTP動詞にマップされます.
私は、各エンドポイントを作成するために、最小限のAPI構文を使用しています.HTTP動詞では、ルートへのリクエストを処理するルートとルートハンドラーを宣言する必要があります.Remote Injection ContainerでMoviesServiceを登録したので、各ルートハンドラーに注入できます.
APIのテスト
あなたがインスタンスのために新しい映画を加えたいならば.
using MoviesAPI.Data;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<MoviesDatabaseSettings>(builder.Configuration.GetSection("MoviesDatabaseSettings"));
builder.Services.AddSingleton<MoviesService>();
var app = builder.Build();
app.MapGet("/", () => "Movies API!");
app.MapGet("/api/movies", async(MoviesService moviesService) => await moviesService.Get());
app.MapGet("/api/movies/{id}", async(MoviesService moviesService, string id) =>
{
var movie = await moviesService.Get(id);
return movie is null ? Results.NotFound() : Results.Ok(movie);
});
app.MapPost("/api/movies", async (MoviesService moviesService, Movie movie) =>
{
await moviesService.Create(movie);
return Results.Ok();
});
app.MapPut("/api/movies/{id}", async(MoviesService moviesService, string id, Movie updatedMovie) =>
{
var movie = await moviesService.Get(id);
if (movie is null) return Results.NotFound();
updatedMovie.Id = movie.Id;
await moviesService.Update(id, updatedMovie);
return Results.NoContent();
});
app.MapDelete("/api/movies/{id}", async (MoviesService moviesService, string id) =>
{
var movie = await moviesService.Get(id);
if (movie is null) return Results.NotFound();
await moviesService.Remove(movie.Id);
return Results.NoContent();
});
app.Run();
あなたがインスタンスのために新しい映画を加えたいならば.
{
"Title": "The Shawshank Redemption",
"Year": 1994,
"Summary": "Banker Andy Dufresne is arrested for killing his wife and her lover. After a hard adjustment, he tries to improve the conditions of the prison and to give hope to his companions.",
"Actors": ["tim robbins","morgan freeman"]
}
ハッピーコーディング!
ここではビデオチュートリアルです
Reference
この問題について(ASPでWeb APIを作成する方法.NETとMongoDB), 我々は、より多くの情報をここで見つけました
https://dev.to/techwithpat/create-a-web-api-with-aspnet-and-mongodb-1a94
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(ASPでWeb APIを作成する方法.NETとMongoDB), 我々は、より多くの情報をここで見つけました https://dev.to/techwithpat/create-a-web-api-with-aspnet-and-mongodb-1a94テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol