当前位置: 首页 > news >正文

asp.net core api RESTful 风格控制器

在 ASP.NET Core API 中,遵循 RESTful 风格的控制器一般具备以下几个关键特征:

✅ RESTful 风格控制器的命名规范

控制器命名

  • 使用 复数名词,表示资源集合,如 ProductsControllerUsersController

路由风格

  • 路由使用 [Route("api/[controller]")],自动绑定控制器名。

  • 路由中不包含动词,操作由 HTTP 方法来表达。

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{// 示例方法如下
}

✅ RESTful 对应的 HTTP 方法与语义

HTTP 方法路由示例含义
GET/api/products获取所有产品
GET/api/products/1获取 ID 为 1 的产品
POST/api/products新建产品
PUT/api/products/1更新 ID 为 1 的产品
DELETE/api/products/1删除 ID 为 1 的产品

✅ 示例控制器代码

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{// GET: api/products[HttpGet]public IActionResult GetAll(){var products = new List<string> { "Apple", "Banana", "Orange" };return Ok(products);}// GET: api/products/5[HttpGet("{id}")]public IActionResult GetById(int id){var product = $"Product {id}";return Ok(product);}// POST: api/products[HttpPost]public IActionResult Create([FromBody] string product){// 假设添加成功return CreatedAtAction(nameof(GetById), new { id = 123 }, product);}// PUT: api/products/5[HttpPut("{id}")]public IActionResult Update(int id, [FromBody] string product){// 假设更新成功return NoContent();}// DELETE: api/products/5[HttpDelete("{id}")]public IActionResult Delete(int id){// 假设删除成功return NoContent();}
}

✅ RESTful 最佳实践

  1. 使用状态码准确表达结果

          200 OK, 201 Created, 204 No Content, 400 Bad Request, 404 Not Found 等。
  2. 请求体与响应体结构统一

           推荐使用统一格式返回结果(如包裹成标准响应结构)。
  3. 避免在 URL 中加入动词

           错误示例:/api/getProductById/1
  4. 使用分页查询时,遵循统一格式

           /api/products?page=1&pageSize=10
http://www.dtcms.com/a/195843.html

相关文章:

  • STM32之蜂鸣器和按键
  • 支持同步观看的媒体服务器GhostHub
  • SpringCloud微服务开发与实战
  • 初识计算机网络。计算机网络基本概念,分类,性能指标
  • 代码随想录60期day38
  • “分布形态“
  • Java 常用的Arrays函数
  • 初识仓颉编程语言:高效、简洁与创新的编程选择
  • C++:字符串操作函数
  • uniapp-商城-60-后台 新增商品(属性的选中和页面显示,数组join 的使用)
  • NexBot AI 1.9.3 | 专业AI写作助手,高自由度定制内容,支持中文设置
  • foxmail - foxmail 启用超大附件提示密码与帐号不匹配
  • ESP32 PWM开发对比:底层驱动 VS Arduino封装,谁更适合你?
  • 4.3/Q1,Charls最新文章解读
  • XML介绍及常用c及c++库
  • Transformer 模型与注意力机制
  • LlamaIndex 第九篇 Indexing索引
  • 2025第三届盘古石杯初赛(计算机部分)
  • 系统线程nt!CcPfBootWorker里面的nt!MmPrefetchPages函数分析
  • 接触感知 钳位电路分析
  • 锚点跳转跟踪#
  • NHANES指标推荐:MDS
  • No module named‘serial‘解决办法
  • 【超分辨率专题】一种考量视频编码比特率优化能力的超分辨率基准
  • 智能AI构建工地安全网:跌倒、抽搐、区域入侵多场景覆盖
  • TII-2024《AGP-Net: Adaptive Graph Prior Network for Image Denoising》
  • 解决CLion控制台不能及时显示输出的问题
  • 告别传统的防抖机制,提交按钮的新时代来临
  • math toolkit for real-time development读书笔记一三角函数快速计算(1)
  • 1Panel应用推荐:Beszel轻量级服务器监控平台