ASP.NET CORE WEB API DEMO 01
2018-03-11 02:52
671 查看
using System; using System.Collections.Concurrent; using System.Collections.Generic; namespace Demo.Models { public class BookChapter { public Guid Id { get; set; } public int Number { get; set; } public string Title { get; set; } public int Pages { get; set; } } public interface IBookChaptersRepository { void Init(); IEnumerable<BookChapter> GetAll(); BookChapter Find(Guid id); void Add(BookChapter chapter); BookChapter Remove(Guid id); void Update(BookChapter chapter); } public class BookChaptersRepository : IBookChaptersRepository { private readonly ConcurrentDictionary<Guid, BookChapter> _chapters = new ConcurrentDictionary<Guid, BookChapter>(); public void Init() { Add(new BookChapter { Number = 1, Title = "Application Architectures", Pages = 35 }); Add(new BookChapter { Number = 2, Title = "Core C#", Pages = 42 }); } public IEnumerable<BookChapter> GetAll() => _chapters.Values; public BookChapter Find(Guid id) { BookChapter chapter; _chapters.TryGetValue(id, out chapter); return chapter; } public void Add(BookChapter chapter) { chapter.Id = Guid.NewGuid(); _chapters[chapter.Id] = chapter; } public BookChapter Remove(Guid id) { BookChapter chapter; _chapters.TryRemove(id, out chapter); return chapter; } public void Update(BookChapter chapter) { _chapters[chapter.Id] = chapter; } } }
using System; using System.Collections.Generic; using Demo.Models; using Microsoft.AspNetCore.Mvc; namespace Demo.Controllers { [Produces("application/json", ("application/xml"))] [Route("api/[controller]")] public class BookChaptersController : Controller { private readonly IBookChaptersRepository _repository; public BookChaptersController(IBookChaptersRepository bookChaptersRepository) { _repository = bookChaptersRepository; } // GET api/bookchapters [HttpGet] public IEnumerable<BookChapter> GetBookChapters() => _repository.GetAll(); // GET api/bookchapters/guid [HttpGet("{id}", Name = nameof(GetBookChapterById))] public IActionResult GetBookChapterById(Guid id) { BookChapter chapter = _repository.Find(id); if (chapter == null) { return NotFound(); } return new ObjectResult(chapter); } // POST api/bookchapters [HttpPost] public IActionResult PostBookChapter([FromBody]BookChapter chapter) { if (chapter == null) { return BadRequest(); } _repository.Add(chapter); return CreatedAtRoute(nameof(GetBookChapterById), new { id = chapter.Id }, chapter); } // PUT api/bookchapters [HttpPut("{id}")] public IActionResult PutBookChapter(Guid id, [FromBody]BookChapter chapter) { if (chapter == null || id != chapter.Id) { return BadRequest(); } if (_repository.Find(id) == null) { return NotFound(); } _repository.Update(chapter); return new NoContentResult(); } // DELETE api/bookchapters/id [HttpDelete("id")] public void Delete(Guid id) { _repository.Remove(id); } } }
using Demo.Models; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace Demo { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddMvc().AddXmlSerializerFormatters(); IBookChaptersRepository repos = new BookChaptersRepository(); repos.Init(); services.AddSingleton(repos); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(); } } }
相关文章推荐
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
- ASP.NET CORE WEB API DEMO 02
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
- asp.net core webapi项目配置全局路由
- ASP.Net Core WebApi几种版本控制对比
- ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
- 在Mac下创建ASP.NET Core Web API
- asp.net core webapi之跨域(Cors)访问
- ASP.NET Core WebApi 跨域配置 Cors
- 微软ASP.NET 电商网站开发实战 MVC6 +HTML5 +WCF+WebAPI+NoSQL+mongoDB+Redis+Core视频 代码 面试题
- 品尝阿里云容器服务:初步尝试ASP.NET Core Web API站点的Docker自动化部署
- Gitlab CI 自动部署 asp.net core web api 到Docker容器
- asp.net core webapi 使用swagger
- ASP.NET Core Web API 最小化项目
- Docker容器环境下ASP.NET Core Web API应用程序的调试
- Asp.net Core WebApi 返回JSON自动驼峰格式化问题
- 【译】使用Jwt身份认证保护 Asp.Net Core Web Api
- Docker容器环境下ASP.NET Core Web API应用程序的调试
- Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)