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

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.xdnf.cn/news/6851.html

相关文章:

  • 清华大学大模型驱动的跨尺度空间智能研究最新综述:具身智能体、智慧城市和地球科学领域的进展
  • 【OpenCV】帧差法、级联分类器、透视变换
  • 【GESP】C++三级真题 luogu-B3867 [GESP202309 三级] 小杨的储蓄
  • Hi3516DV500刷写固件
  • Linux 文件权限 (rwx) 详解
  • PowerBI企业运营分析——RFM模型分析
  • 栈与队列-
  • AI知识梳理——RAG、Agent、ReAct、LangChain、LangGraph、MCP、Function Calling、JSON-RPC
  • 电机试验平台:创新科技推动电动机研究发展
  • 多模态学习(三)—— ROPE位置编码:从理论到实践
  • JavaScript入门【1】概述
  • 进阶-数据结构部分:​​​​​​​2、常用排序算法
  • OpenHarmony平台驱动使用 (二),Camera
  • SQL语句执行问题
  • 【AI算法工程师面试指北】ResNet为什么用avgpool结构?
  • Python 基础之函数命名
  • Redis持久化机制详解:保障数据安全的关键策略
  • MySQL表的约束(上)
  • LeetCode 第 45 题“跳跃游戏 II”
  • Spring之Bean的初始化 Bean的生命周期 全站式解析
  • PyTorch实现CrossEntropyLoss示例
  • AIGC在电商行业的应用:革新零售体验
  • 计算机网络(1)——概述
  • Docker入门指南:镜像、容器与仓库的核心概念解析
  • Redis的Hot Key自动发现与处理方案?Redis大Key(Big Key)的优化策略?Redis内存碎片率高的原因及解决方案?
  • STM32 | FreeRTOS 递归信号量
  • C# 深入理解类(静态函数成员)
  • golang中的反射示例
  • 大模型AI原生应用效果测试与评估视频课来啦
  • Python多进程编程执行任务