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

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.lryc.cn/news/2379608.html

相关文章:

  • 【甲方安全建设】Python 项目静态扫描工具 Bandit 安装使用详细教程
  • 实习记录小程序|基于SSM+Vue的实习记录小程序设计与实现(源码+数据库+文档)
  • 老旧设备升级利器:Modbus TCP转 Profinet让能效监控更智能
  • 【从基础到模型网络】深度学习-语义分割-ROI
  • Qt控件:交互控件
  • 前端下载ZIP包方法总结
  • 掌握Docker:从运行到挂载的全面指南
  • Pandas pyecharts数据可视化基础③
  • QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分)
  • 数据库中关于查询选课问题的解法
  • 基于Bootstrap 的网页html css 登录页制作成品
  • python中http.cookiejar和http.cookie的区别
  • 【NLP 71、常见大模型的模型结构对比】
  • 组件导航 (Navigation)+flutter项目搭建-混合开发+分栏
  • HGDB企业版迁移到HGDB安全版
  • ProfibusDP主站转modbusTCP网关与ABB电机保护器数据交互
  • AM32电调学习解读六:main.c文件的函数介绍
  • ubuntu24.04上安装NVIDIA driver+CUDA+cuDNN+Anaconda+Pytorch
  • AutoVACUUM (PostgreSQL) 与 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC (Oracle) 对比
  • Rust中的交叉编译与vendered特性
  • 3、函数和约束
  • PhpStudy | PhpStudy 工具安装 —— Windows 系统安装 PhpStudy
  • Debezium快照事件监听器系统设计
  • 基于vue框架的订单管理系统r3771(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【2025年前端高频场景题系列】使用同一个链接,如何实现PC打开是web应用、手机打是-个H5 应用?
  • 语音识别-2
  • React useState 的同步/异步行为及设计原理解析
  • 语音识别——语音转文字
  • 兰亭妙微:用系统化思维重构智能座舱 UI 体验
  • 计算机视觉----基础概念、卷积