.Net8?WebAPI項(xiàng)目創(chuàng)建部署的實(shí)現(xiàn)
本著學(xué)新不學(xué)舊的原則,.Net Core會(huì)逐步替代.Net Framework,并且是開源框架,能用在什么地方懂的都懂。本文記錄了Net8框架下的Web API項(xiàng)目創(chuàng)建到部署過程。
1、創(chuàng)建項(xiàng)目
新建項(xiàng)目選擇ASP.NET Core Web API,太多了的話可以在上面篩選
如果沒有去VS Installer添加“ASP.NET 和 Web開發(fā)”模塊并安裝。
配置項(xiàng)目
配置HTTPS:方便測試不勾選。
不使用頂級語句:勾選后是傳統(tǒng)的Program類中定義Main函數(shù)入口;不勾選直接就是指令有點(diǎn)抽象不符合C#習(xí)慣,夠不夠選看個(gè)人。
使用控制器:不勾選會(huì)在Program中寫方法,看著亂,建議勾選。
2、項(xiàng)目結(jié)構(gòu)和解釋
項(xiàng)目結(jié)構(gòu)
Main函數(shù)配置解釋:
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(); //設(shè)置文檔內(nèi)容 var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) //只有當(dāng)程序處于debug的情況才開啟swagger { //分別注入中間件和ui中間間 app.UseSwagger(); app.UseSwaggerUI(); } app.UseAuthorization(); app.MapControllers(); app.Run(); } } }
Controller解釋:
using Microsoft.AspNetCore.Mvc; namespace WebAPI記錄.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; } // http://ip:port/WeatherForecast [HttpGet(Name = "GetWeatherForecast")] // 創(chuàng)建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[Random.Shared.Next(Summaries.Length)] }) .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、本地運(yùn)行
可以選擇http或者IIS方式運(yùn)行,端口見上面json內(nèi)的配置
運(yùn)行效果
Debug模式下會(huì)進(jìn)入Swagger頁面(見上面Main函數(shù)注釋),以UI形式方便觀察測試接口和結(jié)果
點(diǎn)擊Execute查看請求URL和返回結(jié)果
至此本地測試完成
4、生成項(xiàng)目
選擇菜單欄中的 生成 -> 發(fā)布。
目標(biāo)可以選文件夾,簡單一點(diǎn)
默認(rèn)路徑是生成文件夾下的publish目錄
點(diǎn)擊發(fā)布編譯生成項(xiàng)目
生成成功后可以直接到生成目錄下:
5、服務(wù)器遠(yuǎn)程部署(Windows)
部署環(huán)境:Window Server 2016
(1)安裝IIS
這邊簡單寫了,詳細(xì)自行查詢
服務(wù)器管理器 -> 添加功能 -> 安裝IIS
(2)安裝NetCore運(yùn)行時(shí)
進(jìn)入微軟官網(wǎng)下載運(yùn)行時(shí)Download .NET 8.0 (Linux, macOS, and Windows),選擇HostBundle包即可。
安裝完后,右鍵找到IIS管理器:
在模塊下出現(xiàn)AspNetCoreModuleV2表示安裝成功:
(3)配置IIS
添加應(yīng)用程序池:
輸入名稱,選擇”無托管代碼“:
將發(fā)布生成的文件夾傳到服務(wù)器上去,過程略。
IIS添加網(wǎng)站:
應(yīng)用程序池選擇剛才創(chuàng)建的
物理路徑選擇剛才上傳的文件夾
綁定的端口選擇空端口(不用和項(xiàng)目中json配置的一樣)
編輯權(quán)限中創(chuàng)建一個(gè)完全控制權(quán)限的賬戶
點(diǎn)擊”啟動(dòng)“運(yùn)行,發(fā)現(xiàn)什么都沒有。別忘記我們做的是API不是網(wǎng)站,地址換成接口URL就有了
Postman遠(yuǎn)程測試也沒有問題:
6、新增自定義接口
Controllers文件夾添加控制器
命名方式注意以Controller結(jié)尾
創(chuàng)建好后代碼自動(dòng)繼承Controller。
[Route(“[controller]”)]
表示URL以類名MyAPI為路由地址,希望其他地址直接改字符串就行。
列舉了4個(gè)請求的例子:
using Microsoft.AspNetCore.Mvc; namespace WebAPI記錄.Controllers { [ApiController] [Route("[controller]")] public class MyAPIController : Controller { // http://ip:port [HttpGet] public string GetString() { return "Hello"; } // http://ip:port/myapi/id [HttpGet("id")] public string GetStringByID([FromHeader]int id) // FromHeader屬性表示從請求頭獲得參數(shù) { return "Hello " + id.ToString(); } // http://ip:port/myapi/result [HttpGet("result")] public IActionResult GetStringResult() { var data = new { Message = "Hello" }; return Ok(data); // Ok返回包含請求數(shù)據(jù)的HTTP 200 } // http://ip:port/postdata [HttpPost("postdata")] public IActionResult PostData([FromBody] DataModel data) // FromBody屬性表示從請求的Body中讀取并轉(zhuǎn)為DataModel類 { // 在這里處理接收到的數(shù)據(jù) return CreatedAtAction(nameof(PostData), null, new { Message = data }); // CreatedAtAction返回包含創(chuàng)建資源的 URL 的 HTTP 201 響應(yīng) } } }
DataModel類:
namespace WebAPI記錄 { public class DataModel { public string Name { get; set; } public int Value { get; set; } } }
運(yùn)行后已經(jīng)可以訪問結(jié)果了
測試結(jié)果:
到此這篇關(guān)于.Net8 WebAPI項(xiàng)目創(chuàng)建部署的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān).Net8 WebAPI創(chuàng)建部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
asp.net 下拉列表無級數(shù)據(jù)綁定實(shí)現(xiàn)代碼
asp.net 下拉列表無級數(shù)據(jù)綁定實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-10-10asp.net傳多個(gè)值到其它頁面的具體實(shí)現(xiàn)
在頁面之間的跳轉(zhuǎn),經(jīng)常會(huì)用到傳值,其中可能會(huì)傳遞多個(gè)值,下面為大家介紹下asp.net傳多個(gè)值到其它頁面的方法,需要的朋友可以參考下2014-02-02.netcore 寫快遞100的快遞物流信息查詢接口的實(shí)現(xiàn)
這篇文章主要介紹了.netcore 寫快遞100的快遞物流信息查詢接口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04ASP.NET MVC下的四種驗(yàn)證編程方式[續(xù)篇]
ASP.NET MVC支持四種服務(wù)端驗(yàn)證的編程方式(“手工驗(yàn)證”、“標(biāo)注ValidationAttribute特性”、“讓數(shù)據(jù)類型實(shí)現(xiàn)IValidatableObject或者IDataErrorInfo”),那么在ASP.NET MVC框架內(nèi)部是如何提供針對這四種不同編程方式的支持的呢?本篇文章就來聊聊這背后的故事。2016-12-12基于.Net中的數(shù)字與日期格式化規(guī)則助記詞的使用詳解
本篇文章是對.Net中的數(shù)字與日期格式化規(guī)則助記詞的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05Asp.Net Couchbase Memcached圖文安裝調(diào)用開發(fā)
本文主要是是如何安裝CouchBase服務(wù)端,以及客戶端如何進(jìn)行調(diào)用。圖文詳解,大家參考吧2013-11-11