From 088e05420e7c0c033f5734153b99a115ccc96e47 Mon Sep 17 00:00:00 2001 From: 13551345092 <1435483502@qq.com> Date: Sun, 2 Jun 2024 20:38:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E5=91=A8=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20240527-\350\267\257\347\224\261.md" | 37 +++++++++++ ...8-\350\277\207\346\273\244\345\231\250.md" | 66 +++++++++++++++++++ ...30\345\236\213\346\225\260\346\215\256.md" | 55 ++++++++++++++++ ...32\344\271\211\346\216\245\345\217\243.md" | 39 +++++++++++ 4 files changed, 197 insertions(+) create mode 100644 "\351\203\255\345\205\201\346\226\214/20240527-\350\267\257\347\224\261.md" create mode 100644 "\351\203\255\345\205\201\346\226\214/20240528-\350\277\207\346\273\244\345\231\250.md" create mode 100644 "\351\203\255\345\205\201\346\226\214/20240530-\345\206\205\345\255\230\345\236\213\346\225\260\346\215\256.md" create mode 100644 "\351\203\255\345\205\201\346\226\214/20240531-\350\207\252\345\256\232\344\271\211\346\216\245\345\217\243.md" diff --git "a/\351\203\255\345\205\201\346\226\214/20240527-\350\267\257\347\224\261.md" "b/\351\203\255\345\205\201\346\226\214/20240527-\350\267\257\347\224\261.md" new file mode 100644 index 0000000..1a956b2 --- /dev/null +++ "b/\351\203\255\345\205\201\346\226\214/20240527-\350\267\257\347\224\261.md" @@ -0,0 +1,37 @@ +控制器是一个类,通常继承自 `ControllerBase` 类,如下所示: + +```csharp +using Microsoft.AspNetCore.Mvc; + +namespace MyWebApi +{ + [ApiController] + [Route("api/[controller]")] + public class ValuesController : ControllerBase + { + // 控制器中的路由处理函数将放在这里 + } +} +``` + +在上面的示例中,`ValuesController` 控制器使用 `[ApiController]` 特性来标识其为API控制器,使用 `[Route("api/[controller]")]` 来定义控制器的路由前缀。 + +#### 路由处理函数 + +路由处理函数即控制器中的具体方法,用于处理特定的HTTP请求,并返回相应的响应。以下是一个示例路由处理函数: + +```csharp +[HttpGet] +public IActionResult Get(int id) +{ + // 处理获取特定资源的请求 + if(id == 1) + { + return Ok("Resource with id 1"); + } + else + { + return Ok("id错误"); + } +} +``` \ No newline at end of file diff --git "a/\351\203\255\345\205\201\346\226\214/20240528-\350\277\207\346\273\244\345\231\250.md" "b/\351\203\255\345\205\201\346\226\214/20240528-\350\277\207\346\273\244\345\231\250.md" new file mode 100644 index 0000000..795c2e2 --- /dev/null +++ "b/\351\203\255\345\205\201\346\226\214/20240528-\350\277\207\346\273\244\345\231\250.md" @@ -0,0 +1,66 @@ +Action过滤器是ASP.NET Web API中一种能够在Web API控制器的Action方法执行前后执行特定逻辑的机制。通过Action过滤器,可以在处理请求的不同阶段插入自定义的逻辑,例如日志记录、异常处理、权限验证等。 + +#### 常见的Action过滤器类型 + +1. **Authorization Filter(授权过滤器)**: + - 用于在Action执行前执行授权验证,确定当前用户是否有权限执行该Action。 + +2. **Action Filter(操作过滤器)**: + - 在Action方法执行前后执行自定义逻辑,如日志记录、缓存处理等。 + +3. **Result Filter(结果过滤器)**: + - 在Action方法执行后,结果返回前执行自定义逻辑,可以修改最终返回的结果。 + +4. **Exception Filter(异常过滤器)**: + - 用于捕获Action方法中发生的异常,并执行相应的处理逻辑。 + +#### 如何使用Action过滤器? + +在ASP.NET Web API中,可以通过派生自 `ActionFilterAttribute` 类来创建自定义的Action过滤器。 + +示例代码如下: + +```csharp +using System; +using System.Web.Http.Filters; + +public class CustomActionFilterAttribute : ActionFilterAttribute +{ + public override void OnActionExecuting(HttpActionContext actionContext) + { + // 在Action方法执行前执行的逻辑 + Console.WriteLine("Action is executing..."); + } + + public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) + { + // 在Action方法执行后执行的逻辑 + Console.WriteLine("Action has been executed."); + } +} +``` + +在上述示例中,`CustomActionFilterAttribute` 类继承自 `ActionFilterAttribute`,并重写了`OnActionExecuting`和`OnActionExecuted`方法,分别表示Action执行前和执行后的逻辑处理。 + +#### 如何应用Action过滤器到控制器或Action方法上? + +1. 将自定义的Action过滤器应用到整个控制器: +```csharp +[CustomActionFilter] +public class MyController : ApiController +{ + // 控制器中的Action方法 +} +``` + +2. 将Action过滤器应用到单个Action方法: +```csharp +public class MyController : ApiController +{ + [CustomActionFilter] + public IHttpActionResult MyAction() + { + // Action方法的逻辑 + } +} +``` diff --git "a/\351\203\255\345\205\201\346\226\214/20240530-\345\206\205\345\255\230\345\236\213\346\225\260\346\215\256.md" "b/\351\203\255\345\205\201\346\226\214/20240530-\345\206\205\345\255\230\345\236\213\346\225\260\346\215\256.md" new file mode 100644 index 0000000..3139edc --- /dev/null +++ "b/\351\203\255\345\205\201\346\226\214/20240530-\345\206\205\345\255\230\345\236\213\346\225\260\346\215\256.md" @@ -0,0 +1,55 @@ +### Web API 中内存型数据库 +在 Web API 开发中,使用内存型数据库是一种常见的方式,它能够在应用程序的内存中存储和检索数据,而无需使用传统的数据库系统。以下是关于在 Web API 中使用内存型数据库的一些重要笔记。 + +#### 内存型数据库的概念 +内存型数据库是一种将数据存储在应用程序的内存中的数据库系统。与传统的数据库系统相比,它具有更快的读写速度和更低的延迟,但也存在数据丢失的风险,因为数据仅存储在内存中。 + +#### 使用内存型数据库的好处 +使用内存型数据库可以提供更高的性能和响应速度,特别适用于需要高并发读写操作的场景。它还可以简化应用程序的部署和管理,因为不需要安装和配置传统的数据库系统。 + +.NET 中的内存型数据库 +在 .NET 开发中,我们可以使用一些内存型数据库来处理数据。以下是一些常见的内存型数据库: + +#### Redis +Redis 是一种高性能的键值存储数据库,它支持持久化、发布-订阅、事务等功能,并且可以存储字符串、列表、哈希表等数据结构。 + +在 Web API 中使用内存型数据库 +在 Web API 中使用内存型数据库非常简单。我们可以在应用程序启动时创建数据库实例,并在控制器中使用它进行数据操作。以下是一个使用内存型数据库的示例: +``` +public class MyController : ControllerBase +{ + private readonly IDatabase _database; + + public MyController(IDatabase database) + { + _database = database; + } + + [HttpGet] + public ActionResult> Get() + { + var data = _database.GetData(); + return Ok(data); + } + + [HttpPost] + public ActionResult Post(string newData) + { + _database.AddData(newData); + return Ok("Data added successfully."); + } +} + +``` +在这个示例中,我们通过依赖注入方式将内存型数据库实例注入到控制器中。然后,我们可以在控制器的方法中使用该数据库实例进行数据操作。 + +#### 注意事项 +在使用内存型数据库时,需要注意以下事项: + +内存型数据库不适用于需要持久化数据或长期存储的场景。 + +内存型数据库需要更多的内存资源,因此需要控制数据量和内存使用。 + +数据存储在内存中,存在数据丢失的风险,因此需要定期备份和处理数据的持久化问题。 + + diff --git "a/\351\203\255\345\205\201\346\226\214/20240531-\350\207\252\345\256\232\344\271\211\346\216\245\345\217\243.md" "b/\351\203\255\345\205\201\346\226\214/20240531-\350\207\252\345\256\232\344\271\211\346\216\245\345\217\243.md" new file mode 100644 index 0000000..578cee9 --- /dev/null +++ "b/\351\203\255\345\205\201\346\226\214/20240531-\350\207\252\345\256\232\344\271\211\346\216\245\345\217\243.md" @@ -0,0 +1,39 @@ +### Web API 中自定义接口的笔记 +Web API 是一种用于构建和提供 Web 服务的技术,它允许我们通过 HTTP 协议来进行数据传输。在 Web API 中,我们可以创建自定义接口来实现特定的业务逻辑。以下是关于在 Web API 中创建自定义接口的一些重要笔记。 + +#### 创建自定义接口 +在 Web API 中,我们可以通过创建自定义控制器来实现自定义接口。以下是一个简单的示例: +``` +using Microsoft.AspNetCore.Mvc; + +[Route("api/[controller]")] +[ApiController] +public class CustomController : ControllerBase +{ + [HttpGet("custom")] + public ActionResult GetCustomData() + { + // 执行自定义逻辑 + return "Custom Data"; + } + + [HttpPost("custom")] + public ActionResult PostCustomData(string data) + { + // 处理传入的数据并返回结果 + return $"Received data: {data}"; + } +} + +``` +在这个示例中,我们创建了一个名为CustomController的自定义控制器,它包含了名为GetCustomData和PostCustomData的自定义方法。这些方法分别对应了自定义接口的GET和POST请求。 + +#### 路由和方法 +在 Web API 中,我们可以使用路由和 HTTP 方法来定义自定义接口的访问路径和操作。在上面的示例中,我们使用了[HttpGet]和[HttpPost]属性来指定方法对应的 HTTP 方法。 + +#### 参数和返回值 +自定义接口的方法可以接受参数并返回结果。在上面的示例中,我们在PostCustomData方法中接受了一个名为data的字符串参数,并返回一个包含传入数据的字符串结果。 + +#### 使用自定义接口 +一旦我们创建了自定义接口,我们可以通过发送相应的 HTTP 请求来访问和使用它。例如,在上面的示例中,我们可以使用 GET 请求访问 /api/custom/custom 路径来调用 GetCustomData 方法,使用 POST 请求访问 /api/custom/custom 路径并传递数据来调用 PostCustomData 方法。 + -- Gitee