6.2.1 Web API项目的搭建
进入VS,【创建新项目】,选择【ASP.NET Core Web API】模板,【下一步】,编辑项目名称及项目位置,【下一步】,选择框架,其他选项默认即可,【创建】。


进入项目,选择调试的浏览器

启动调试,在浏览器Swagger界面中点击【Try it out】

点击【Execute】,收到接口的响应

至此,一个WebAPI项目搭建并调试完成,项目中WeatherForecast 为控制器的名称即调试时接口的名称,**public IEnumerable<WeatherForecast> Get()**方法为接口进行Get请求时的操作或响应方法。
cs
using Microsoft.AspNetCore.Mvc;
namespace WebApplicationTest.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()//操作方法
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}
6.2.2 Post、Put等操作方法
上面的WebAPI项目创建及调试是基于VS模板自带的控制器进行演示调试的,在实际的开发中需要根据业务需求自主添加控制器及编写接口响应逻辑。下面演示一下自主添加控制器并调试。
在Controllers文件夹下添加控制器【Test】

编写控制器内容【Post】和【Get】,关于Post和Get请求的详解请参阅HTTP协议。
以下是常见的 HTTP 请求方法列表:
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 从服务器获取资源。用于请求数据而不对数据进行更改。例如,从服务器获取网页、图片等。 |
2 | POST | 向服务器发送数据以创建新资源。常用于提交表单数据或上传文件。发送的数据包含在请求体中。 |
3 | PUT | 向服务器发送数据以更新现有资源。如果资源不存在,则创建新的资源。与 POST 不同,PUT 通常是幂等的,即多次执行相同的 PUT 请求不会产生不同的结果。 |
4 | DELETE | 从服务器删除指定的资源。请求中包含要删除的资源标识符。 |
5 | PATCH | 对资源进行部分修改。与 PUT 类似,但 PATCH 只更改部分数据而不是替换整个资源。 |
6 | HEAD | 类似于 GET,但服务器只返回响应的头部,不返回实际数据。用于检查资源的元数据(例如,检查资源是否存在,查看响应的头部信息)。 |
7 | OPTIONS | 返回服务器支持的 HTTP 方法。用于检查服务器支持哪些请求方法,通常用于跨域资源共享(CORS)的预检请求。 |
8 | TRACE | 回显服务器收到的请求,主要用于诊断。客户端可以查看请求在服务器中的处理路径。 |
9 | CONNECT | 建立一个到服务器的隧道,通常用于 HTTPS 连接。客户端可以通过该隧道发送加密的数据。 |
cs
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
namespace WebApplicationTest.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
[HttpGet]
public Person GetPerson()
{
return new Person("牧羊人枸杞泡茶",18);
}
[HttpPost]
public string[] SaveNote(SaveNoteRequest req)
{
System.IO.File.WriteAllText(req.Title+".txt",req.conrent);
return new string[] { "OK",req.Title};
}
}
}
其中【Person】类和【SaveNoteRequest】类自行创建
cs
namespace WebApplicationTest
{
public record Person(string Name,int Age);
}
namespace WebApplicationTest.Controllers
{
public record SaveNoteRequest(string Title,string conrent);
}
启动调试,进入浏览器Swagger调试界面,进行Get请求

Post请求,Post请求时需要入参,入参列表为Post 请求所对应的操作方法【public string[] SaveNote(SaveNoteRequest req)】的入参模型【SaveNoteRequest】

添加调试断点,检查入参

响应结果

以上就是WebAPI项目的搭建过程,以及控制器添加和Post、Get方法的添加调试。