From 3f909ac9cadf2aae83835d2b1e4056f725e0adc5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 2 Jun 2024 19:34:29 +0800 Subject: [PATCH] bj --- .../20240527-\350\267\257\347\224\261.md" | 108 ++++++++++++++++++ ...8-\350\277\207\346\273\244\345\231\250.md" | 48 ++++++++ .../20240530-\351\241\271\347\233\256.md" | 38 ++++++ ...23\345\202\250\347\263\273\347\273\237.md" | 24 ++++ 4 files changed, 218 insertions(+) create mode 100644 "\344\276\257\345\235\244\351\241\272/20240527-\350\267\257\347\224\261.md" create mode 100644 "\344\276\257\345\235\244\351\241\272/20240528-\350\277\207\346\273\244\345\231\250.md" create mode 100644 "\344\276\257\345\235\244\351\241\272/20240530-\351\241\271\347\233\256.md" create mode 100644 "\344\276\257\345\235\244\351\241\272/20240531-\344\273\223\345\202\250\347\263\273\347\273\237.md" diff --git "a/\344\276\257\345\235\244\351\241\272/20240527-\350\267\257\347\224\261.md" "b/\344\276\257\345\235\244\351\241\272/20240527-\350\267\257\347\224\261.md" new file mode 100644 index 0000000..29b0a14 --- /dev/null +++ "b/\344\276\257\345\235\244\351\241\272/20240527-\350\267\257\347\224\261.md" @@ -0,0 +1,108 @@ +``` +路由:1.在控制器上写上两个特性 [ApiController].[Route("/api/..")] + +2.如果不符合restfull风格的路由的话,在action上单独写路由 +[HttpGet("/api/...")] +``` + +``` +关于匹配到函数的处理: +入参:函数的参数,模型绑定 +出参:返回的响应,1.状态码 2.带对象的状态码 3.重定向 4.内容:{Code:1000,data:[],msg:"请求成功"} + + +``` + + +``` +Dto:BlogDto.cs + +namespace Admin2024.Api; + +public class BlogDto{ + public string Title {get;set;}=null!; + public string Author {get;set;}=null!; + public string? Flag {get;set;} + +} +``` + + +``` +BlogsController.cs: +using Microsoft.AspNetCore.Mvc; + +namespace Admin2024.Api; + +[ApiController] +[Route("/api/[controller]")] + +public class BlogsController:ControllerBase{ +//创建 + public IActionResult Index(){ + return Ok("哈哈哈哈"); + } + + [Route("{id}")] + public IActionResult Details(int id){ + return Ok(id); + } +//新增 + [HttpPost] + public ActionResult Post(BlogDto blogDto){ + return blogDto; + } +//编辑 + [HttpPut("{id}")] + public ActionResult PUT(int id,BlogDto blogDto){ + return new {id,blogDto}; + } +//删除 + [HttpDelete] + public IActionResult Delete(int id){ + return Ok(id); + } + + +} +``` + + +``` +http: +@url=http://localhost:5000 + +### +GET {{url}}/api/books +Accept: application/json + +### +GET {{url}}/api/blogs/1 HTTP/1.1 + + +### +POST {{url}}/api/blogs HTTP/1.1 +Content-Type: application/json + +{ + "title":"晚上又和", + "author":"驾驶证", + "flag":"绝对是" +} + +### +PUT {{url}}/api/blogs/11 HTTP/1.1 +Content-Type: application/json + +{ + "title":"jjjjj", + "author":"驾驶证", + "flag":"dsz" +} + +### +DELETE {{url}}/api/blogs/12 HTTP/1.1 + +### +GET {{url}}/api/books/77/blogs/88 HTTP/1.1 +``` \ No newline at end of file diff --git "a/\344\276\257\345\235\244\351\241\272/20240528-\350\277\207\346\273\244\345\231\250.md" "b/\344\276\257\345\235\244\351\241\272/20240528-\350\277\207\346\273\244\345\231\250.md" new file mode 100644 index 0000000..7575e04 --- /dev/null +++ "b/\344\276\257\345\235\244\351\241\272/20240528-\350\277\207\346\273\244\345\231\250.md" @@ -0,0 +1,48 @@ +#### 过滤器 +##### Filter的开发和调用 +``` + +在默认的WebApi中,框架提供了三种Filter,他们的功能和运行条件如下表所示: + +Filter 类型 实现的接口 描述 +Authorization IAuthorizationFilter 最先运行的Filter,被用作请求权限校验 +Action IActionFilter 在Action运行的前、后运行 +Exception IExceptionFilter 当异常发生的时候运行 +``` +``` +建Filter ApiResultFilter.cs: + +namespace Admin2024.Api; + +public class ApiResultFilter:IAsyncResultFilter{ + public Task OnResultExecutionAsync(ResultExecutingContent content,ResultExectionDeletegate next){ + //判断返回结果是否是内容,如果是,我们就给content.Result赋一个新的实例对象 + if(content.Result is objectResult){ + var objectResult=(objectResult)content.Result; + content.Result=new objectResult(new ApiResult{ + Code=1000, + Msg="请求成功", + Data=objectResult.Value + }) + }else{ + content.Result=new objectResult(new ApiResult{ + Code=1001 + }) + await next(); + } + } +} +``` + +``` +Dto ApiResult.cs + +namespace Admin2024.Api; + +public class ApiResult{ + public int Code{get;set;} + public string? Msg{get;set;} + public object? Data{get;set;} + +} +``` \ No newline at end of file diff --git "a/\344\276\257\345\235\244\351\241\272/20240530-\351\241\271\347\233\256.md" "b/\344\276\257\345\235\244\351\241\272/20240530-\351\241\271\347\233\256.md" new file mode 100644 index 0000000..ac5c00b --- /dev/null +++ "b/\344\276\257\345\235\244\351\241\272/20240530-\351\241\271\347\233\256.md" @@ -0,0 +1,38 @@ +#### 项目创建 +``` +一.主体结构: + ①:Resultfull风格的webAApi + ②:Asp.net Core 8.0 + ③:采用传统控制器模式 + +二.模型设计(图书管理系统) + 作者:(Authors) + 姓名:AuthorName + 性别:Gender + 出生年月:Birthday + + 图书: + 书名:BookName + 出版社:Publister + 作者:AuthorId + 价格:Price + +三.内存型数据库(自定义的一个集合类) + +四.仓储系统(准备用来接入数据库的一套接口) + ①:通用型仓储接口 + ②:个性化的仓储系统(作者的增删改查,图书的增删改查) + +五.利用第一步的主体结构,具体实现Resultfull风格的关于作者,图书的CRUD + ①:作者:获取作者列表 get/api/authors + 指定作者:get/api/authors/888 + 新增作者:post/api/authors + 修改作者:put/api/authors/999 + 删除作者:delete/api/authors/555 + ②:图书:获取图书列表:get/api/authors/888/books + 指定图书:get/api/authors/888/books/876 + 新增图书:post/api/authors/888/books/555 + 修改图书::put/api/authors/999/books/998 + 删除图书:delete/api/authors/555/books/999 + +``` \ No newline at end of file diff --git "a/\344\276\257\345\235\244\351\241\272/20240531-\344\273\223\345\202\250\347\263\273\347\273\237.md" "b/\344\276\257\345\235\244\351\241\272/20240531-\344\273\223\345\202\250\347\263\273\347\273\237.md" new file mode 100644 index 0000000..51d306b --- /dev/null +++ "b/\344\276\257\345\235\244\351\241\272/20240531-\344\273\223\345\202\250\347\263\273\347\273\237.md" @@ -0,0 +1,24 @@ +#### 仓储系统 +``` +public interface IAuthorRepository{ + 1.//通过id获取指定作者的方法 + 2.//获取所有作者的方法 + 3.//函数三要数:函数名称,函数参数,函数返回值 +} +``` + +``` +建Services(实现类)-AuthorRespository.cs + +using BookStore.Api.Domain; +using BookStore.Api.Db; +namespace class AuthorRepository;IAthorRepository{ + public ICollectionGetAllAuthors(){ + //这个实现应该从持久化的数据源中获取数据库文件名称,各种异构数据,从各种api中获取的数据 + } +} + +public Authors GetAuthorById(Guid id){ + +} +``` \ No newline at end of file -- Gitee