news 2026/6/15 22:19:25

【REST API】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【REST API】

在 .NET Core WebAPI 开发中,REST API是一种架构风格,用于构建基于 HTTP 协议的 Web 服务。它遵循 REST(Representational State Transfer)设计原则。

核心概念

1.RESTful 原则

  • 统一接口:使用标准 HTTP 方法(GET、POST、PUT、DELETE 等)
  • 无状态:每个请求都包含处理所需的所有信息
  • 资源导向:一切都是资源,通过 URI 标识
  • 可缓存:响应应定义是否可缓存
  • 分层系统:客户端不关心与最终服务器的中间层

2.在 .NET Core WebAPI 中的实现

// 典型的 REST API Controller[ApiController][Route("api/[controller]")]// 资源路径:api/productspublicclassProductsController:ControllerBase{privatereadonlyIProductService_productService;publicProductsController(IProductServiceproductService){_productService=productService;}// GET api/products - 获取所有产品[HttpGet]publicasyncTask<ActionResult<IEnumerable<ProductDto>>>GetProducts(){varproducts=await_productService.GetAllAsync();returnOk(products);// HTTP 200 OK}// GET api/products/{id} - 获取单个产品[HttpGet("{id}")]publicasyncTask<ActionResult<ProductDto>>GetProduct(intid){varproduct=await_productService.GetByIdAsync(id);if(product==null)returnNotFound();// HTTP 404 Not FoundreturnOk(product);// HTTP 200 OK}// POST api/products - 创建新产品[HttpPost]publicasyncTask<ActionResult<ProductDto>>CreateProduct(CreateProductDtodto){varcreatedProduct=await_productService.CreateAsync(dto);// RESTful 标准:返回 201 Created 和资源位置returnCreatedAtAction(nameof(GetProduct),new{id=createdProduct.Id},createdProduct);// HTTP 201 Created}// PUT api/products/{id} - 更新整个产品[HttpPut("{id}")]publicasyncTask<IActionResult>UpdateProduct(intid,UpdateProductDtodto){varresult=await_productService.UpdateAsync(id,dto);if(!result)returnNotFound();returnNoContent();// HTTP 204 No Content}// PATCH api/products/{id} - 部分更新产品[HttpPatch("{id}")]publicasyncTask<IActionResult>PartialUpdateProduct(intid,JsonPatchDocument<UpdateProductDto>patchDoc){// 部分更新逻辑returnNoContent();}// DELETE api/products/{id} - 删除产品[HttpDelete("{id}")]publicasyncTask<IActionResult>DeleteProduct(intid){varresult=await_productService.DeleteAsync(id);if(!result)returnNotFound();returnNoContent();// HTTP 204 No Content}}

3.HTTP 方法与操作对应关系

HTTP 方法CRUD 操作描述幂等性安全性
GETRead获取资源
POSTCreate创建新资源
PUTUpdate更新整个资源
PATCHUpdate部分更新资源
DELETEDelete删除资源

4.状态码使用

// 常用 HTTP 状态码returnOk(data);// 200 - 成功returnCreated(uri,data);// 201 - 创建成功returnNoContent();// 204 - 成功无内容returnBadRequest(error);// 400 - 客户端错误returnUnauthorized();// 401 - 未认证returnForbid();// 403 - 无权限returnNotFound();// 404 - 资源不存在returnConflict(error);// 409 - 冲突returnStatusCode(500,error);// 500 - 服务器错误

5.RESTful 最佳实践

// 1. 使用复数名词命名资源// 正确:/api/products、/api/users// 避免:/api/getProduct、/api/createUser// 2. 使用嵌套资源表示关系[HttpGet("api/users/{userId}/orders")]// 获取用户的订单publicIActionResultGetUserOrders(intuserId){}// 3. 使用查询参数进行过滤、分页、排序[HttpGet("api/products")]publicIActionResultGetProducts([FromQuery]stringcategory,// 过滤[FromQuery]intpage=1,// 分页[FromQuery]intpageSize=10,// 分页大小[FromQuery]stringsortBy="name"){}// 4. 使用 HATEOAS 提供超媒体链接publicclassProductDto{publicintId{get;set;}publicstringName{get;set;}publicdecimalPrice{get;set;}publicList<LinkDto>Links{get;set;}=new();}// 在控制器中添加链接productDto.Links.Add(newLinkDto(href:Url.Link("GetProduct",new{id=productDto.Id}),rel:"self",method:"GET"));

6..NET Core 中的配置

// Startup.cs 或 Program.cs 中的配置builder.Services.AddControllers().AddJsonOptions(options=>{options.JsonSerializerOptions.PropertyNamingPolicy=JsonNamingPolicy.CamelCase;}).ConfigureApiBehaviorOptions(options=>{// 自动验证模型options.SuppressModelStateInvalidFilter=false;});// 添加 Swagger/OpenAPI 文档(推荐)builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();

7.版本控制

// 使用 URL 版本控制[ApiVersion("1.0")][Route("api/v{version:apiVersion}/[controller]")]publicclassProductsController:ControllerBase{}// 或使用 Header 版本控制[ApiVersion("2.0")][Route("api/[controller]")]publicclassProductsV2Controller:ControllerBase{}

总结

在 .NET Core WebAPI 中,REST API 是:

  1. 基于 HTTP 标准的 Web 服务架构
  2. 资源导向的设计方式
  3. 无状态的通信协议
  4. 使用标准 HTTP 方法对应 CRUD 操作
  5. 返回标准 HTTP 状态码
  6. 支持内容协商(JSON/XML)
  7. 易于缓存扩展

这样的设计使得 API 具有:

  • 可发现性:清晰的 URL 结构
  • 可读性:直观的 HTTP 方法和状态码
  • 松耦合:客户端和服务器独立演化
  • 可扩展性:易于添加新功能
  • 标准化:符合行业最佳实践

REST API 是现代微服务架构和前后端分离应用的基础通信方式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 16:00:59

2026紧急降ai!aigc免费降重只需3分钟,这才是降低ai率的正确方式。

长文章版 凌晨三点&#xff0c;我对着检测报告整个人都傻了——AI率87%&#xff0c;全红&#xff1f;&#xff01; 从人工手改到各种所谓“免费降AI率工具”&#xff0c;我几乎全试过&#xff0c;不是没效果&#xff0c;就是把字数改到翻倍交不上去。最后还是靠自己总结的5个技…

作者头像 李华
网站建设 2026/6/15 11:43:37

基于springboot的城乡商城协作社区网上商城论坛交流系统(编号:57734107)vue3

目录项目概述技术架构核心功能创新点应用价值开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;项目概述 …

作者头像 李华
网站建设 2026/6/15 7:21:51

基于SpringBoot的外卖点餐管理系统的设计与实现vue3

目录外卖点餐管理系统的设计与实现技术亮点应用价值开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;外卖…

作者头像 李华
网站建设 2026/6/15 8:23:35

vcruntime140.dll文件丢失彻底解决办法 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/6/15 9:28:19

如何用AI加速JasperSoft报表开发流程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个AI辅助的JasperSoft报表生成工具&#xff0c;能够根据用户输入的自然语言描述自动生成JRXML模板。功能包括&#xff1a;1) 解析用户需求自动匹配数据源&#xff1b;2) 智能…

作者头像 李华