From b03c02acfb0b175de8319c2e878ffb15756b302c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E7=A3=8A?= <2466435919@qq.com> Date: Sun, 26 May 2024 21:11:34 +0800 Subject: [PATCH] web --- "\346\236\227\347\243\212/2024-05-20.md" | 53 ++++++++++++++++ "\346\236\227\347\243\212/2024-05-21.md" | 69 +++++++++++++++++++++ "\346\236\227\347\243\212/2024-05-23.md" | 18 ++++++ "\346\236\227\347\243\212/2024-05-24.md" | 77 ++++++++++++++++++++++++ 4 files changed, 217 insertions(+) create mode 100644 "\346\236\227\347\243\212/2024-05-20.md" create mode 100644 "\346\236\227\347\243\212/2024-05-21.md" create mode 100644 "\346\236\227\347\243\212/2024-05-23.md" create mode 100644 "\346\236\227\347\243\212/2024-05-24.md" diff --git "a/\346\236\227\347\243\212/2024-05-20.md" "b/\346\236\227\347\243\212/2024-05-20.md" new file mode 100644 index 0000000..6b66364 --- /dev/null +++ "b/\346\236\227\347\243\212/2024-05-20.md" @@ -0,0 +1,53 @@ +Net 下实现API接口 + +在.Net平台下,有很多技术实现一个HTTP接口服务,像Web Service,WCF,WCF Rest,ASP.NET Web API等。他们之间有相同之处也存在很多区别。 + +1、Web Service + +① 它是基于SOAP协议的,数据格式是XML + +② 只支持HTTP协议 + +③ 它不是开源的,但可以被任意一个了解XML的人使用 + +④ 它只能部署在IIS上 + +2、WCF + +① 这个也是基于SOAP的,数据格式是XML + +② 这个是Web Service(ASMX)的进化版,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ. + +③ WCF的主要问题是,它配置起来特别的繁琐 + +④ 它不是开源的,但可以被任意一个了解XML的人使用 + +⑤ 它可以部署在应用程序中或者IIS上或者Windows服务中 + +3、WCF Rest + +① 想使用WCF Rest service,你必须在WCF中使用webHttpBindings + +② 它分别用WebGet和WebInvoke属性,实现了HTTP的GET和POST动词 + +③ 要想使用其他的HTTP动词,你需要在IIS中做一些配置,使.svc文件可以接受这些动词的请求 + +④ 使用WebGet通过参数传输数据,也需要配置。而且必须指定UriTemplate + +⑤ 它支持XML、JSON以及ATOM这些数据格式 + +4、ASP.NET Web API + +① 这是一个ASP.NET下用于构建基于 HTTP 的API服务框架。它的工作方式与 ASP.NET MVC Web 应用程序的工作方式大致相同,只是它将数据作为响应而不是 HTML 视图。 + +② 在.Net平台上Web API 是一个开源的、理想的、构建RESTful 服务的技术 + +③ 不像WCF REST Service.它可以使用HTTP的全部特点(比如URIs、request/response头,缓存,版本控制,多种内容格式) + +④ 它也支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮 + +⑤ 它可以独立于IIS部署(支持Web Host和Self Host任意类型的应用程序,如控制台、Windows Form应用程序、WPF应用甚至Windows Service两种寄宿方式)。 + +⑥ 这是一个轻量级的框架,并且对限制带宽的设备,比如智能手机等支持的很好 + +⑦ Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。 \ No newline at end of file diff --git "a/\346\236\227\347\243\212/2024-05-21.md" "b/\346\236\227\347\243\212/2024-05-21.md" new file mode 100644 index 0000000..264c90a --- /dev/null +++ "b/\346\236\227\347\243\212/2024-05-21.md" @@ -0,0 +1,69 @@ +## 添加类 + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace WebAPI.Models +{ + public class movie + { + + public string name { get; set; } + public string director { get; set; } + public string actor { get; set; } + public string type { get; set; } + public int price { get; set; } + + + + } +} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +namespace WebAPI.Models +{ + public class Product + { + public int Id { get; set; } + public string Name { get; set; } + public string Category { get; set; } + public decimal Price { get; set; } + } +} + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web.Http; +using WebAPI.Models; +namespace WebAPI.Controllers +{ + public class productsController : ApiController + { + Product[] products = new Product[] + { + new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, + new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, + new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } + }; + public IEnumerable GetAllProducts() + { + return products; + } + public IHttpActionResult GetProduct(int id) + { + var product = products.FirstOrDefault((p) => p.Id == id); + if (product == null) + { + return NotFound(); + } + return Ok(product); + } + } +} diff --git "a/\346\236\227\347\243\212/2024-05-23.md" "b/\346\236\227\347\243\212/2024-05-23.md" new file mode 100644 index 0000000..43bfff8 --- /dev/null +++ "b/\346\236\227\347\243\212/2024-05-23.md" @@ -0,0 +1,18 @@ +## 笔记 +中间件的注册通常是在 Startup.cs 文件的 Configure 方法中进行的,通过 IApplicationBuilder 对象的 Use 方法来实现。 +中间件可以按需添加,它们按照添加的顺序执行,并且可以对请求进行过滤和加工处理。 + +中间件的注册方式主要有以下几种: + +Use:注册中间件,可以控制是否将请求传递给下一个中间件。 +Run:注册中间件,通常用于请求管道的末尾,不会将请求传递下去。 +Map/MapWhen:在请求管道中增加分支,条件满足后由分支管道处理。 +中间件的实现通常包含两个主要部分: + +在调用 next 中间件之前执行的操作。 +在调用 next 中间件之后执行的操作。 +中间件的执行顺序非常重要,因为它们决定了请求和响应的处理流程。一些中间件可能依赖于其他中间件的执行结果,因此它们必须按照正确的顺序注册。 + +此外,ASP.NET Core 允许开发者自定义中间件来满足特定的需求。自定义中间件可以通过实现 Use 方法或者直接实现 RequestDelegate 委托来创建,并在 Configure 方法中注册到请求管道中。 + +中间件管道的强大之处在于它的灵活性和扩展性,开发者可以根据自己的需求添加或修改中间件,从而构建出满足特定业务场景的Web应用。 \ No newline at end of file diff --git "a/\346\236\227\347\243\212/2024-05-24.md" "b/\346\236\227\347\243\212/2024-05-24.md" new file mode 100644 index 0000000..cde47fa --- /dev/null +++ "b/\346\236\227\347\243\212/2024-05-24.md" @@ -0,0 +1,77 @@ +WebApi路由 + + WebAPI 是开发接口的技术 + +特性路由 + + 创建webapi的时候一般都是有默认路由,如果不想用这个默认路由的调用方式的话,可以使用特性路由给具体的方法定制一个调用形式,它的优先级是高于默认路由的 + + + +```js + [RoutePrefix("api/Values")] + public class ValuesController : ApiController + { + // GET api/values + //1.匹配请求的Method + //2.匹配HttpGet + //3.匹配参数 + + //特性路由:优先级最高,绕开默认的Api路由; + //特性路由:随意的指定我们请求Api的URL + + [HttpGet] + //[Route("api/Values/Get")] + [Route("Get")] + public IEnumerable LGetadfsgfsf() + { + return new string[] { "value1", "value2" }; + } + + //public IEnumerable GetUser() + //{ + // return new string[] { "value1", "value2" }; + //} + + // GET api/values/5 + //[Route("api/Values/Get/{id:int}")] + [Route("Get/{id:int}")] + public string Get(int id) + { + return "value-Get"; + } + + [Route("Get/{id}")] + public string GetStr(string id) + { + return "value-Get"; + } + + //[Route("api/Values/Get/{id:int}/V2/Richard")] + [Route("Get/{id:int}/V2/Richard")] + public string GetV2(int id) + { + return "value-GetV2"; + } + + + // POST api/values + public void Post([FromBody]string value) + { + } + + // PUT api/values/5 + public void Put(int id, [FromBody]string value) + { + } + + // DELETE api/values/5 + public void Delete(int id) + { + } + } + + + +``` + -- Gitee