1,NET6.0和NET5.0创建的asp.net core webapi项目的区别:
NET5.0创建的webapi项目有一个Startup.cs文件。在NET6.0下面没有了。
说明微软在这块又做了优化。精减了启用文件。
2,项目默认生产一个天气预报控制器WeatherForecastController。
3,感觉微软命名不是很规范,或者说,有些内容微软自己也没有规划清楚。我这里明明是建立的asp.net core webapi 项目,而不是asp.net core MVC 项目,但是使用到的名称空间却是带mvc的(using crosoft.AspNetCore.Mvc;)。
4,asp.net core webapi 控制器的类继承的是 ControllerBase, 跟MVC下面的控制器集成的父类是不一样的。
5,启动项目,运行如下,站点默认路径为:https://localhost:7182/swagger/index.html 这里是swagger首页。 这里需要强调的是asp.net core webapi 5.0和 6.0都是自带swagger功能的,以前在.net framework时代 swagger是要在项目下单独安装组件和配置后,才具有的一个功能。
6,添加一个自己的控制器。
代码如下:
using Microsoft.AspNetCore.Mvc;
namespace D365WebApi6._0.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class MyTestController : ControllerBase
{
[HttpGet]
public string GetSomething(string id)
{
return "xxx";
}
}
}
我这里的api请求地址路由是这么设置的,在控制器类,前面加一个如下的标签 [Route(“api/[controller]/[action]”)] ,其中“api”是随意取名的,[controller]这里会匹配控制器的名称,主要是匹配控制器类的名称。控制器类名取名为:MyTestController,那么这里匹配到的[controller] 等于MyTest。
[action]则匹配的是方法名称,在这里匹配到[action]等于GetSomething。
那么,这里控制器路由标签匹配到的完整路径为:api/mytest/getSomething
控制器方法的访问路径为:https://localhost:7182/api/mytest/getSomething?id=100
这里的id为控制器方法的参数(这里写的是http get方法)。
控制器方法的访问路径为:https://localhost:7182/api/mytest/getSomething?id=100,这里的id为控制器方法的参数(这里写的是http get方法)。
在浏览器中访问结果如下:
以上是非restful的方式访问,如果要用restful的方式访问怎么办呢? 办法如下:
在控制器中,再添加2个http get 方法:
浏览器中访问截图如下:
Swagger中的区别: