最后 , 將BookService也加入到IoC容器中:
services.AddSingleton<IBookService, BookService>();這里 , 將BookService作為單一實(shí)例注入 , 這是因?yàn)?BookService 直接依賴于 MongoClient , 而根據(jù)官方Mongo Client重用準(zhǔn)則 , 我們應(yīng)該使用單一實(shí)例服務(wù)在IoC容器中注入MongoClient 。
添加Controller提供應(yīng)用層接口
在Controllers目錄下 , 新增 BookController 控制器:
namespace EDT.BookStore.API.Controllers{[ApiController][Route("[controller]")]public class BookController : ControllerBase{private readonly IMapper _mapper;private readonly IBookService _bookService;public BookController(IMapper mapper, IBookService bookService){_mapper = mapper;_bookService = bookService;}[HttpGet][ProducesResponseType(typeof(IList<Book>), StatusCodes.Status200OK)][ProducesResponseType(typeof(IList<Book>), StatusCodes.Status204NoContent)]public async Task<ActionResult<IList<Book>>> Get(){var books = await _bookService.GetAsync();if (books == null){return NoContent();}return Ok(books);}[HttpGet("{id:length(24)}", Name = "GetBook")][ProducesResponseType(typeof(Book), StatusCodes.Status200OK)][ProducesResponseType(typeof(Book), StatusCodes.Status404NotFound)]public async Task<ActionResult<Book>> Get(string id){var book = await _bookService.GetAsync(id);if (book == null){return NotFound();}return Ok(book);}[HttpPost][ProducesResponseType(typeof(Book), StatusCodes.Status201Created)]public async Task<ActionResult<Book>> Create(CreateBookDto bookDto){var book = _mapper.Map<Book>(bookDto);await _bookService.CreateAsync(book);return CreatedAtRoute("GetBook", new { id = book.Id.ToString() }, bookDto);}[HttpPut("{id:length(24)}")][ProducesResponseType(StatusCodes.Status200OK)][ProducesResponseType(StatusCodes.Status404NotFound)]public async Task<ActionResult> Update(string id, UpdateBookDto bookDto){var book = await _bookService.GetAsync(id);if (book == null){return NotFound();}_mapper.Map(bookDto, book);await _bookService.UpdateAsync(id, book);return Ok();}[HttpDelete("{id:length(24)}")][ProducesResponseType(StatusCodes.Status200OK)][ProducesResponseType(StatusCodes.Status404NotFound)]public async Task<ActionResult> Update(string id){var book = await _bookService.GetAsync(id);if (book == null){return NotFound();}await _bookService.RemoveAsync(id);return Ok();}}}3 測試ASP.NET Core WebAPI生成該ASP.NET Core WebAPI應(yīng)用 , 啟動之后在Swagger頁面進(jìn)行測試

文章插圖
點(diǎn)擊GET /Book接口 , 測試結(jié)果如下:

文章插圖
其他接口測試結(jié)果不再贅述 , 有興趣的童鞋可以自行跑起來測試一下 。
示例github地址:https://github.com/EdisonChou/EDT.Mongo.Sample
總結(jié)本文總結(jié)了如何在ASP.NET Core/ASP.NET 5應(yīng)用程序中操作MongoDB , 展示了一個麻雀雖小但五臟俱全的示例 , 希望能對你有所幫助 。
參考資料Microsoft Doc , 使用ASP.NET Core和MongoDB創(chuàng)建WebAPI
唐建法 , 《MongoDB高手課》(極客時(shí)間)
郭遠(yuǎn)威 , 《MongoDB實(shí)戰(zhàn)指南》(圖書)
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- mongodb是nosql數(shù)據(jù)庫嗎 4 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 6 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 7 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 8 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 9 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 11 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 12 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 14 NoSQL | MongoDB入門實(shí)戰(zhàn)教程
- 做雙眼皮有幾種方法
