.Net8 WebAPI项目创建摆设纪录

打印 上一主题 下一主题

主题 849|帖子 849|积分 2547

.Net8 WebAPI项目创建摆设纪录

本着学新不学旧的原则,.Net Core会徐徐更换.Net Framework,并且是开源框架,能用在什么地方懂的都懂。本文纪录了Net8框架下的Web API项目创建到摆设过程。
1、创建项目

新建项目选择ASP.NET Core Web API,太多了的话可以在上面筛选
如果没有去VS Installer添加“ASP.NET 和 Web开发”模块并安装。


配置项目
   配置HTTPS:方便测试不勾选。
不使用顶级语句:勾选后是传统的Program类中界说Main函数入口;不勾选直接就是指令有点抽象不符合C#习惯,够不够选看个人。
使用控制器:不勾选会在Program中写方法,看着乱,建议勾选。
  

2、项目结构和解释

项目结构

Main函数配置解释:
  1. namespace WebAPI记录
  2. {
  3.     public class Program
  4.     {
  5.         public static void Main(string[] args)
  6.         {
  7.             var builder = WebApplication.CreateBuilder(args);
  8.             // Add services to the container.
  9.             builder.Services.AddControllers();
  10.             //注入swagger
  11.             // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
  12.             builder.Services.AddEndpointsApiExplorer(); //生成文档
  13.             builder.Services.AddSwaggerGen();   //设置文档内容
  14.             var app = builder.Build();
  15.             // Configure the HTTP request pipeline.
  16.             if (app.Environment.IsDevelopment())    //只有当程序处于debug的情况才开启swagger
  17.             {
  18.                 //分别注入中间件和ui中间间
  19.                 app.UseSwagger();
  20.                 app.UseSwaggerUI();
  21.             }
  22.             app.UseAuthorization();
  23.             app.MapControllers();
  24.             app.Run();
  25.         }
  26.     }
  27. }
复制代码
Controller解释:
  1. using Microsoft.AspNetCore.Mvc;
  2. namespace WebAPI记录.Controllers
  3. {
  4.     [ApiController]
  5.     [Route("[controller]")]
  6.     public class WeatherForecastController : ControllerBase
  7.     {
  8.         private static readonly string[] Summaries = new[]
  9.         {
  10.             "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
  11.         };
  12.         private readonly ILogger<WeatherForecastController> _logger;
  13.         public WeatherForecastController(ILogger<WeatherForecastController> logger)
  14.         {
  15.             _logger = logger;
  16.         }
  17.                 // http://ip:port/WeatherForecast
  18.         [HttpGet(Name = "GetWeatherForecast")]        // 创建Get请求
  19.         public IEnumerable<WeatherForecast> Get()
  20.         {
  21.             return Enumerable.Range(1, 5).Select(index => new WeatherForecast
  22.             {
  23.                 Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
  24.                 TemperatureC = Random.Shared.Next(-20, 55),
  25.                 Summary = Summaries[Random.Shared.Next(Summaries.Length)]
  26.             })
  27.             .ToArray();
  28.         }
  29.     }
  30. }
  31. .ToArray();
  32.         }
  33.     }
  34. }
复制代码
LaunchSettings.json配置文件:
纪录了端口配置信息等。
  1. {
  2.   "$schema": "http://json.schemastore.org/launchsettings.json",
  3.   "iisSettings": {
  4.     "windowsAuthentication": false,
  5.     "anonymousAuthentication": true,
  6.     "iisExpress": {
  7.       "applicationUrl": "http://localhost:12692",
  8.       "sslPort": 0
  9.     }
  10.   },
  11.   "profiles": {
  12.     "http": {
  13.       "commandName": "Project",
  14.       "dotnetRunMessages": true,
  15.       "launchBrowser": true,
  16.       "launchUrl": "swagger",
  17.       "applicationUrl": "http://localhost:5053",
  18.       "environmentVariables": {
  19.         "ASPNETCORE_ENVIRONMENT": "Development"
  20.       }
  21.     },
  22.     "IIS Express": {
  23.       "commandName": "IISExpress",
  24.       "launchBrowser": true,
  25.       "launchUrl": "swagger",
  26.       "environmentVariables": {
  27.         "ASPNETCORE_ENVIRONMENT": "Development"
  28.       }
  29.     }
  30.   }
  31. }
复制代码
3、本地运行

可以选择http大概IIS方式运行,端口见上面json内的配置

运行效果
Debug模式下会进入Swagger页面(见上面Main函数注释),以UI情势方便观察测试接口和结果


点击Execute查看请求URL和返回结果

至此本地测试完成
4、生成项目

选择菜单栏中的 生成 -> 发布。
目标可以选文件夹,简单一点

默认路径是生成文件夹下的publish目录

点击发布编译生成项目


生成乐成后可以直接到生成目录下:

5、服务器远程摆设(Windows)

摆设环境:Window Server 2016
(1)安装IIS

这边简单写了,详细自行查询
服务器管理器 -> 添加功能 -> 安装IIS
(2)安装NetCore运行时

进入微软官网下载运行时Download .NET 8.0 (Linux, macOS, and Windows),选择HostBundle包即可。

安装完后,右键找到IIS管理器:

在模块下出现AspNetCoreModuleV2表示安装乐成:


(3)配置IIS

添加应用程序池:

输入名称,选择”无托管代码“:

将发布生成的文件夹传到服务器上去,过程略。
IIS添加网站:
   应用程序池选择刚才创建的
物理路径选择刚才上传的文件夹
绑定的端口选择空端口(不消和项目中json配置的一样)
  

编辑权限中创建一个完全控制权限的账户

点击”启动“运行,发现什么都没有。别忘记我们做的是API不是网站,地址换成接口URL就有了


Postman远程测试也没有题目:

6、新增自界说接口

Controllers文件夹添加控制器


定名方式注意以Controller末端

创建好后代码自动继承Controller。
[Route(“[controller]”)]表示URL以类名MyAPI为路由地址,盼望其他地址直接改字符串就行。
列举了4个请求的例子:
  1. using Microsoft.AspNetCore.Mvc;
  2. namespace WebAPI记录.Controllers
  3. {
  4.     [ApiController]
  5.     [Route("[controller]")]
  6.     public class MyAPIController : Controller
  7.     {
  8.         // http://ip:port
  9.         [HttpGet]
  10.         public string GetString()
  11.         {
  12.             return "Hello";
  13.         }
  14.         // http://ip:port/myapi/id
  15.         [HttpGet("id")]
  16.         public string GetStringByID([FromHeader]int id) // FromHeader属性表示从请求头获得参数
  17.         {
  18.             return "Hello " + id.ToString();
  19.         }
  20.         // http://ip:port/myapi/result
  21.         [HttpGet("result")]
  22.         public IActionResult GetStringResult()
  23.         {
  24.             var data = new { Message = "Hello" };
  25.             return Ok(data);    // Ok返回包含请求数据的HTTP 200
  26.         }
  27.         // http://ip:port/postdata
  28.         [HttpPost("postdata")]
  29.         public IActionResult PostData([FromBody] DataModel data)    // FromBody属性表示从请求的Body中读取并转为DataModel类
  30.         {
  31.             // 在这里处理接收到的数据
  32.             return CreatedAtAction(nameof(PostData), null, new { Message = data }); // CreatedAtAction返回包含创建资源的 URL 的 HTTP 201 响应
  33.         }
  34.     }
  35. }
复制代码
DataModel类:
  1. namespace WebAPI记录
  2. {
  3.     public class DataModel
  4.     {
  5.         public string Name { get; set; }
  6.         public int Value { get; set; }
  7.     }
  8. }
复制代码
运行后已经可以访问结果了

测试结果:




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表