道家人 发表于 2024-12-29 15:58:12

.Net8 WebAPI项目创建摆设纪录

.Net8 WebAPI项目创建摆设纪录

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

新建项目选择ASP.NET Core Web API,太多了的话可以在上面筛选
如果没有去VS Installer添加“ASP.NET 和 Web开发”模块并安装。
https://i-blog.csdnimg.cn/direct/93e7c0d4f2d345189bcc984d0a798d4d.png#pic_center
https://i-blog.csdnimg.cn/direct/4d1f7df2213f4f79aa265857413f6ad6.png#pic_center
配置项目
   配置HTTPS:方便测试不勾选。
不使用顶级语句:勾选后是传统的Program类中界说Main函数入口;不勾选直接就是指令有点抽象不符合C#习惯,够不够选看个人。
使用控制器:不勾选会在Program中写方法,看着乱,建议勾选。
https://i-blog.csdnimg.cn/direct/70d45b98eb3942089f7e319b68e1a26e.png#pic_center
2、项目结构和解释

项目结构
https://i-blog.csdnimg.cn/direct/fb6228caccef4148836e3c3f8786d2ab.png#pic_center
Main函数配置解释:
namespace WebAPI记录
{
    public class Program
    {
      public static void Main(string[] args)
      {
            var builder = WebApplication.CreateBuilder(args);

            // Add services to the container.

            builder.Services.AddControllers();

            //注入swagger
            // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
            builder.Services.AddEndpointsApiExplorer(); //生成文档
            builder.Services.AddSwaggerGen();   //设置文档内容

            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (app.Environment.IsDevelopment())    //只有当程序处于debug的情况才开启swagger
            {
                //分别注入中间件和ui中间间
                app.UseSwagger();
                app.UseSwaggerUI();
            }

            app.UseAuthorization();


            app.MapControllers();

            app.Run();
      }
    }
}
Controller解释:
using Microsoft.AspNetCore.Mvc;

namespace WebAPI记录.Controllers
{
   
    ")]
    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;
      }

                // http://ip:port/WeatherForecast
              // 创建Get请求
      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
            })
            .ToArray();
      }
    }
}
.ToArray();
      }
    }
}
LaunchSettings.json配置文件:
纪录了端口配置信息等。
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:12692",
      "sslPort": 0
    }
},
"profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "http://localhost:5053",
      "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
}
}
3、本地运行

可以选择http大概IIS方式运行,端口见上面json内的配置
https://i-blog.csdnimg.cn/direct/fd8c0ce85e3c425c9a39054bfd0983e4.png#pic_center
运行效果
Debug模式下会进入Swagger页面(见上面Main函数注释),以UI情势方便观察测试接口和结果
https://i-blog.csdnimg.cn/direct/d71d4cab50f14a5381c73727c88e0550.png#pic_center
https://i-blog.csdnimg.cn/direct/bd3161805479427cae7496ebbacf0d53.png#pic_center
点击Execute查看请求URL和返回结果
https://i-blog.csdnimg.cn/direct/4e64b97ae47949fb9a8aae79478e25e1.png#pic_center
至此本地测试完成
4、生成项目

选择菜单栏中的 生成 -> 发布。
目标可以选文件夹,简单一点
https://i-blog.csdnimg.cn/direct/7dda92d9a2574ec18f62b9f7f4a6c10e.png#pic_center
默认路径是生成文件夹下的publish目录
https://i-blog.csdnimg.cn/direct/8b954e7bce1045d789d989972f4535a1.png#pic_center
点击发布编译生成项目
https://i-blog.csdnimg.cn/direct/ea8896b371674008bc463866ef298237.png#pic_center
https://i-blog.csdnimg.cn/direct/9f60ba75937d464e9b977c0f5f834dc6.png#pic_center
生成乐成后可以直接到生成目录下:
https://i-blog.csdnimg.cn/direct/abe9d41e9eae4407910a4156b6829009.png#pic_center
5、服务器远程摆设(Windows)

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

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

进入微软官网下载运行时Download .NET 8.0 (Linux, macOS, and Windows),选择HostBundle包即可。
https://i-blog.csdnimg.cn/direct/99fea7a52dd94007a930a5ae80dfeb91.png#pic_center
安装完后,右键找到IIS管理器:
https://i-blog.csdnimg.cn/direct/c611691f19e1499b9ee6ed4e4e5fc3b3.png#pic_center
在模块下出现AspNetCoreModuleV2表示安装乐成:
https://i-blog.csdnimg.cn/direct/c6d03c8f8c65407e9183dc8d95e3544a.png#pic_center
https://i-blog.csdnimg.cn/direct/fa4e95f74e794883b83f76747932e41f.png#pic_center
(3)配置IIS

添加应用程序池:
https://i-blog.csdnimg.cn/direct/f6ed70af9bf54af0a02690618d8eb5cd.png#pic_center
输入名称,选择”无托管代码“:
https://i-blog.csdnimg.cn/direct/3ad214747c5c4cd8b67ba076d621449c.png#pic_center
将发布生成的文件夹传到服务器上去,过程略。
IIS添加网站:
   应用程序池选择刚才创建的
物理路径选择刚才上传的文件夹
绑定的端口选择空端口(不消和项目中json配置的一样)
https://i-blog.csdnimg.cn/direct/d3c0b03bf3ac4a6f8aaa803ba615f125.png#pic_center
编辑权限中创建一个完全控制权限的账户
https://i-blog.csdnimg.cn/direct/db77164e8d584858a0d6a4942ef18bfd.png#pic_center
点击”启动“运行,发现什么都没有。别忘记我们做的是API不是网站,地址换成接口URL就有了
https://i-blog.csdnimg.cn/direct/155a98e0d1d64ab287a028143ddd1e23.png#pic_center
https://i-blog.csdnimg.cn/direct/f63fc5370b86448d85627d420455f01e.png#pic_center
Postman远程测试也没有题目:
https://i-blog.csdnimg.cn/direct/11146080a5614be49e4ec9b9e7240d83.png#pic_center
6、新增自界说接口

Controllers文件夹添加控制器
https://i-blog.csdnimg.cn/direct/aae6cf5001094f33a98d5a997a625c8e.png#pic_center
https://i-blog.csdnimg.cn/direct/13ba124260f54fe38ce890b057646cc9.png#pic_center
定名方式注意以Controller末端
https://i-blog.csdnimg.cn/direct/c7ce6c3b1b1145a0aff5d5fce760d15c.png#pic_center
创建好后代码自动继承Controller。
”)]表示URL以类名MyAPI为路由地址,盼望其他地址直接改字符串就行。
列举了4个请求的例子:
using Microsoft.AspNetCore.Mvc;

namespace WebAPI记录.Controllers
{
   
    ")]
    public class MyAPIController : Controller
    {
      // http://ip:port
      
      public string GetString()
      {
            return "Hello";
      }

      // http://ip:port/myapi/id
      
      public string GetStringByID(int id) // FromHeader属性表示从请求头获得参数
      {
            return "Hello " + id.ToString();
      }

      // http://ip:port/myapi/result
      
      public IActionResult GetStringResult()
      {
            var data = new { Message = "Hello" };
            return Ok(data);    // Ok返回包含请求数据的HTTP 200
      }

      // http://ip:port/postdata
      
      public IActionResult PostData( DataModel data)    // FromBody属性表示从请求的Body中读取并转为DataModel类
      {
            // 在这里处理接收到的数据
            return CreatedAtAction(nameof(PostData), null, new { Message = data }); // CreatedAtAction返回包含创建资源的 URL 的 HTTP 201 响应
      }
    }
}
DataModel类:
namespace WebAPI记录
{
    public class DataModel
    {
      public string Name { get; set; }
      public int Value { get; set; }
    }
}
运行后已经可以访问结果了
https://i-blog.csdnimg.cn/direct/105c53a091134dfb9c500484e0f00328.png#pic_center
测试结果:
https://i-blog.csdnimg.cn/direct/27247d86da24425c969d9425ae61dfda.png#pic_center
https://i-blog.csdnimg.cn/direct/4eb9f128d8e14a6c8f08b648eb713d3b.png#pic_center
https://i-blog.csdnimg.cn/direct/5efa391a02184a239afab8d2e16ece5f.png#pic_center

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: .Net8 WebAPI项目创建摆设纪录