news 2026/4/18 8:39:14

【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/3/18 7:54:19

降ai率从80%到10%!免费降低ai率的秘密都在这篇降ai指南里.

写完论文最头疼的是什么&#xff1f;肯定是查降ai率啊。 AI率太高或太低都不符合学校要求。这意味着要反复修改&#xff0c;不停调整措辞&#xff0c;花更多时间精力&#xff0c;太累人了。 其实我早就想到大家会被降ai问题困扰。 所以我提前研究了不少方法&#xff0c;亲自…

作者头像 李华
网站建设 2026/4/12 17:40:02

AI如何自动修复Windows打印后台处理程序问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Windows Print Spooler修复工具&#xff0c;要求&#xff1a;1. 自动检测Print Spooler服务状态 2. 分析系统日志识别常见错误 3. 提供一键修复功能包括&#xff1a;重启服…

作者头像 李华
网站建设 2026/4/18 5:38:31

5分钟用Node.js搭建AI聊天机器人:从安装到上线

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Node.js聊天机器人原型&#xff0c;要求&#xff1a;1.基于Node.js最新稳定版 2.集成Kimi-K2的API 3.实现基础对话功能 4.支持上下文记忆 5.提供一键部署到InsCode的配置。…

作者头像 李华
网站建设 2026/4/18 0:02:31

SQLMAP高效使用技巧:节省90%的测试时间

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个SQLMAP优化工具&#xff0c;自动分析目标网站的特点并生成最优的SQLMAP命令行参数。工具应支持批量目标处理、多线程扫描和结果自动汇总&#xff0c;显著提升测试效率。提…

作者头像 李华
网站建设 2026/4/15 18:29:01

Cursor AI编程实战:构建智能聊天机器人

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 使用Cursor AI编程工具开发一个Python聊天机器人应用。功能要求&#xff1a;1) 支持自然语言理解和响应&#xff1b;2) 集成OpenAI API&#xff1b;3) 实现上下文记忆功能&#xf…

作者头像 李华
网站建设 2026/3/31 19:01:06

COMFYUI零基础入门:30分钟搭建第一个工作流

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个面向新手的COMFYUI教学工作流&#xff0c;功能是查询并显示当前天气。分4个步骤&#xff1a;1) 输入城市名 2) 调用天气API 3) 解析JSON响应 4) 显示温度/天气图标。每个节…

作者头像 李华