最后 , 将BookService也加入到IoC容器中:
services.AddSingleton<IBookService, BookService>();
这里 , 将BookService作为单一实例注入 , 这是因为 BookService 直接依赖于 MongoClient , 而根据官方Mongo Client重用准则 , 我们应该使用单一实例服务在IoC容器中注入MongoClient 。
添加Controller提供应用层接口
在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应用 , 启动之后在Swagger页面进行测试
文章插图
点击GET /Book接口 , 测试结果如下:
文章插图
其他接口测试结果不再赘述 , 有兴趣的童鞋可以自行跑起来测试一下 。
示例github地址:https://github.com/EdisonChou/EDT.Mongo.Sample
总结本文总结了如何在ASP.NET Core/ASP.NET 5应用程序中操作MongoDB , 展示了一个麻雀虽小但五脏俱全的示例 , 希望能对你有所帮助 。
参考资料Microsoft Doc , 使用ASP.NET Core和MongoDB创建WebAPI
唐建法 , 《MongoDB高手课》(极客时间)
郭远威 , 《MongoDB实战指南》(图书)
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- mongodb是nosql数据库吗 4 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 6 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 7 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 8 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 9 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 11 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 12 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 13 NoSQL | MongoDB入门实战教程
- mongodb是nosql数据库吗 14 NoSQL | MongoDB入门实战教程
- 做双眼皮有几种方法