当前位置: 首页 > 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

相关文章:

  • 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函数分析
  • 接触感知 钳位电路分析
  • 新华每日电讯:博物馆正以可亲可近替代“高冷范儿”
  • 广药集团原董事长李楚源被“双开”:去年8月被查,曾多次发表争议言论
  • 101岁陕西省军区原司令员冀廷璧逝世,曾参加百团大战
  • 深圳南澳码头工程环评将再次举行听证会,项目与珊瑚最近距离仅80米
  • 佩斯科夫:俄方代表团15日将在伊斯坦布尔等候乌克兰代表团
  • 三亚通报救护车省外拉警报器开道旅游:违规违法,责令公司停业整顿