> 技术文档 > WEB API新建API的常规方法_vs2022 web code api

WEB API新建API的常规方法_vs2022 web code api


vs2022 如何新建一条自己的web api 注意已经创建了一个默认的 ASP.NET CORE WEB API项目 同时帮我详细演示 POST、PUT、DELETE 以及其他方法

在 VS2022 中创建自定义 Web API 及各种 HTTP 方法演示
下面我将详细演示如何在已有的 ASP.NET Core Web API 项目中添加自定义 API 控制器,并实现 GET、POST、PUT、DELETE 等 HTTP 方法。

  1. 创建新的 API 控制器
    在解决方案资源管理器中,右键点击 Controllers 文件夹

选择\"添加\" > “控制器”

选择\"API 控制器 - 空\"

命名为 ProductsController.cs (这里以产品 API 为例)

点击\"添加\"

  1. 基本控制器结构
    首先,我们创建一个简单的 Product 模型类。在 Models 文件夹中添加 Product.cs:
namespace YourProjectName.Models{ public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } }}
  1. 实现各种 HTTP 方法的完整控制器
    以下是 ProductsController.cs 的完整代码,包含各种 HTTP 方法:
using Microsoft.AspNetCore.Mvc;using YourProjectName.Models;using System.Collections.Generic;using System.Linq;namespace YourProjectName.Controllers{ [Route(\"api/[controller]\")] [ApiController] public class ProductsController : ControllerBase { // 模拟数据存储 - 实际项目中应该使用数据库 private static List<Product> _products = new List<Product> { new Product { Id = 1, Name = \"Laptop\", Price = 999.99m }, new Product { Id = 2, Name = \"Smartphone\", Price = 699.99m }, new Product { Id = 3, Name = \"Tablet\", Price = 499.99m } }; // GET: api/products [HttpGet] public ActionResult<IEnumerable<Product>> Get() { return Ok(_products); } // GET api/products/5 [HttpGet(\"{id}\")] public ActionResult<Product> Get(int id) { var product = _products.FirstOrDefault(p => p.Id == id); if (product == null) { return NotFound(); } return Ok(product); } // POST api/products [HttpPost] public ActionResult<Product> Post([FromBody] Product product) { // 验证模型 if (!ModelState.IsValid) { return BadRequest(ModelState); } // 生成新ID var newId = _products.Max(p => p.Id) + 1; product.Id = newId; _products.Add(product); // 返回201 Created 状态码,并在Location头中包含新资源的URI return CreatedAtAction(nameof(Get), new { id = product.Id }, product); } // PUT api/products/5 [HttpPut(\"{id}\")] public IActionResult Put(int id, [FromBody] Product product) { if (id != product.Id) { return BadRequest(); } var existingProduct = _products.FirstOrDefault(p => p.Id == id); if (existingProduct == null) { return NotFound(); } existingProduct.Name = product.Name; existingProduct.Price = product.Price; return NoContent(); // 204 No Content } // DELETE api/products/5 [HttpDelete(\"{id}\")] public IActionResult Delete(int id) { var product = _products.FirstOrDefault(p => p.Id == id); if (product == null) { return NotFound(); } _products.Remove(product); return NoContent(); // 204 No Content } // GET api/products/search?name=xxx (自定义查询) [HttpGet(\"search\")] public ActionResult<IEnumerable<Product>> SearchByName([FromQuery] string name) { var results = _products.Where(p =>  p.Name.Contains(name, System.StringComparison.OrdinalIgnoreCase)); if (!results.Any()) { return NotFound(); } return Ok(results); } // GET api/products/expensive (自定义路由) [HttpGet(\"expensive\")] public ActionResult<Product> GetMostExpensive() { var product = _products.OrderByDescending(p => p.Price).FirstOrDefault(); if (product == null) { return NotFound(); } return Ok(product); } }}
  1. 测试 API 的方法
    使用 Swagger/OpenAPI 测试
    如果项目已经配置了 Swagger(默认模板通常包含):

运行项目 (F5 或 Ctrl+F5)

浏览器打开 https://localhost:port/swagger

你会看到 Products 控制器和所有端点

可以点击每个端点进行测试

使用 Postman 测试
GET 所有产品:

方法: GET

URL: https://localhost:port/api/products

GET 单个产品:

方法: GET

URL: https://localhost:port/api/products/1

POST 创建新产品:

方法: POST

URL: https://localhost:port/api/products

Headers: Content-Type: application/json

Body (raw JSON):

{ \"name\": \"Headphones\", \"price\": 199.99}

PUT 更新产品:

方法: PUT

URL: https://localhost:port/api/products/1

Headers: Content-Type: application/json

Body (raw JSON):

{
“id”: 1,
“name”: “Updated Laptop”,
“price”: 1099.99
}

DELETE 删除产品:

方法: DELETE

URL: https://localhost:port/api/products/1

自定义查询:

方法: GET

URL: https://localhost:port/api/products/search?name=phone

自定义路由:

方法: GET

URL: https://localhost:port/api/products/expensive

  1. 重要注意事项
    路由属性:

[Route(“api/[controller]”)] 设置基础路由为 api/products

方法上的 [HttpGet], [HttpPost] 等属性定义特定端点

返回类型:

使用 ActionResult 可以明确返回类型和状态码

常用返回方法:

Ok(result) - 200 OK

CreatedAtAction() - 201 Created

NoContent() - 204 No Content

BadRequest() - 400 Bad Request

NotFound() - 404 Not Found

模型验证:

[ApiController] 属性自动启用模型验证

可以通过 ModelState.IsValid 检查

异步方法:
实际项目中应该使用异步方法,例如:
[HttpGet]
public async Task<ActionResult> Get()
{
return Ok(await _productService.GetAllAsync());
}
依赖注入:
实际项目中应该通过构造函数注入服务,而不是使用静态列表

希望这个详细演示能帮助你理解如何在 ASP.NET Core Web API 中实现各种 HTTP 方法!