日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

net Core做一个webApi的简单实例

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 net Core做一个webApi的简单实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用NetCore 和Dapper 和mySql做一個簡單的實例,

一準備工作

1:VS2017+windos系統,也可以用其他的操作系統和工具

2:一臺Cenetos的虛擬機或者虛擬機

二:開始

1:用微軟官方的netCore的ToDo項目改造,項目的主體結構如下圖,源連接

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api

?

1:打開Nuget控制臺,安裝?MySQL官方.NET Core驅動,并且支持 EF Core

?>Install-Package SapientGuardian.MySql.Data -Pre

2:打開Nuget控制臺,安裝Dapper

>Install-Package Dapper -Pre

3:在Models文件夾下新建ToDoItem 的實體

public class ToDoItem{[Required]public string ID { get; set; }[Required]public string Name { get; set; }[Required]public string Notes { get; set; }public bool Done { get; set; }}

4:在appsettings.json里面配置MySql的數據庫連接字符串,然后點開appsettings.json的屬性將“復制到輸出目錄”項的值改為“始終復制”,

SslMode=none的作用是解決連接的時候報SSL錯誤的 "ConnectionStrings": {"SqlServerConnection": "Server=(LocalDb)\\MSSQLLocalDB, Database=test","MySqlConnection": "Server=自己的服務器;Database=test;User ID=root;Password=111111;SslMode=none"}

?5:在Common下面新建一個AppConfigurtaionServices的類,用于讀取appsettings.json里面的連接字符串(appsettings.json屬性如果沒有選中始終復制,在代碼運行的時候,

IConfiguration 會報錯

)

public class AppConfigurtaionServices{public static IConfiguration Configuration { get; set; }static AppConfigurtaionServices(){Configuration = new ConfigurationBuilder().Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true }).Build();}}

6:新建一個Interfaces文件夾,然后下面建一個IToDoRepository的接口類

public interface IToDoRepository{bool DoesItemExist(string id);IEnumerable<ToDoItem> All();ToDoItem Find(string id);int Insert(ToDoItem item);int Update(ToDoItem item);int Delete(string id);}

  

7:新建一個Services然后下面新建ToDoRepository類 是我們的數據倉儲類 記得要引用(using Dapper;和 using MySql.Data.MySqlClient;)

public class ToDoRepository : IToDoRepository{private static string DefaultSqlConnectionString = "";public ToDoRepository(){DefaultSqlConnectionString = AppConfigurtaionServices.Configuration.GetConnectionString("MySqlConnection"); }public static IDbConnection GetSqlConnection(string sqlConnectionString = null){if (string.IsNullOrWhiteSpace(sqlConnectionString)){sqlConnectionString = DefaultSqlConnectionString;}IDbConnection conn = new MySqlConnection(sqlConnectionString);conn.Open();return conn;}/// <summary>/// 獲取全部/// </summary>/// <returns></returns>public IEnumerable<ToDoItem> All(){using (IDbConnection conn = GetSqlConnection()){string strsql = "select * from ToDoItem";return conn.Query<ToDoItem>(strsql, null);}}/// <summary>/// 查詢是否存在/// </summary>/// <param name="id"></param>/// <returns></returns>public bool DoesItemExist(string id){using (IDbConnection conn = GetSqlConnection()){int cout = conn.Query<int>("select count(*) from ToDoItem where ID=@ID", new { ID = id }).FirstOrDefault();if (cout > 0)return true;elsereturn false;}}/// <summary>/// 刪除/// </summary>/// <param name="id"></param>/// <returns></returns>public int Delete(string id){using (IDbConnection conn = GetSqlConnection()){string strsql = "DELETE from ToDoItem where ID=@ID";return conn.Execute(strsql, new { ID = id });}}/// <summary>/// 查詢整個對象/// </summary>/// <param name="id"></param>/// <returns></returns>public ToDoItem Find(string id){using (IDbConnection conn = GetSqlConnection()){string strsql = "select * from ToDoItem where ID=@ID";return conn.Query<ToDoItem>(strsql, new { ID = id }).FirstOrDefault();}}/// <summary>/// 新增項/// </summary>/// <param name="item"></param>/// <returns></returns>public int Insert(ToDoItem item){using (IDbConnection conn = GetSqlConnection()){string strsql = "INSERT into ToDoItem(ID,Name,Notes,Done)values(@ID,@Name,@Notes,@Done)";return conn.Execute(strsql, item);}}/// <summary>/// 修改/// </summary>/// <param name="item"></param>/// <returns></returns>public int Update(ToDoItem item){using (IDbConnection conn = GetSqlConnection()){string strsql = " UPDATE ToDoItem SET Name=@Name,Notes=@Notes,Done=@Done where ID=@ID";return conn.Execute(strsql, item);}}}

?8:在Controller下面新增一個ToDoItemsController的控制器,記得添加相關的命名空間

[Route("api/[controller]")]public class ToDoItemsController : Controller{private readonly IToDoRepository _toDoRepository;public ToDoItemsController(IToDoRepository toDoRepository){_toDoRepository = toDoRepository;}/// <summary>/// 獲取數據/// </summary>/// <returns></returns>[HttpGet]public IActionResult List(){return Ok(_toDoRepository.All());}/// <summary>/// 新增項/// </summary>/// <param name="item"></param>/// <returns></returns>[HttpPost]public IActionResult Create([FromBody] ToDoItem item){try{if (item == null || !ModelState.IsValid){return BadRequest("沒有通過驗證");}bool itemExists = _toDoRepository.DoesItemExist(item.ID);if (itemExists){return StatusCode(StatusCodes.Status409Conflict, "已經存在此項");}_toDoRepository.Insert(item);}catch (Exception){return BadRequest("創建失敗");}return Ok(item);}/// <summary>/// 修改項/// </summary>/// <param name="item"></param>/// <returns></returns>[HttpPut]public IActionResult Edit([FromBody] ToDoItem item){try{if(item==null || !ModelState.IsValid)return BadRequest("沒有通過必填驗證");var existingItem = _toDoRepository.Find(item.ID);if(existingItem==null){return NotFound("沒有發現此記錄");}_toDoRepository.Update(item);}catch(Exception){return BadRequest("修改失敗");}return NoContent();}/// <summary>/// 刪除/// </summary>/// <param name="id"></param>/// <returns></returns>[HttpDelete("{id}")]public IActionResult Delete(string id){try{var item = _toDoRepository.Find(id);if (item == null)return NotFound("沒有此記錄");_toDoRepository.Delete(id);}catch(Exception ){return BadRequest("刪除失敗");}return NoContent();}}

 9:在ConfigureServices里配置IToDoRepository 和ToDoRepository服務

services.AddSingleton<IToDoRepository, Services.ToDoRepository>();

?10:配置Swagger(絲襪哥)具體Swagger的基礎知識可以連接到

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs=visual-studio

10.1:在Nuget控制臺添加引用

? ?>Install-Package Swashbuckle.AspNetCore

10.2:在Startup類中配置Swagger

10.2.1:在ConfigureServices方法里面添加Swagger服務

//添加Swagger服務services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new Info{Version = "v1",Title = "ToDo API",Description = "A simple example ASP.NET Core Web API",TermsOfService = "None",Contact = new Contact { Name = "Shayne Boyer", Email = "", Url = "https://twitter.com/spboyer" },License = new License { Name = "Use under LICX", Url = "https://example.com/license" }});var basePath = PlatformServices.Default.Application.ApplicationBasePath;var xmlPath = Path.Combine(basePath, "ToDoApi.xml");c.IncludeXmlComments(xmlPath);});

? 10.2.2:在Configure配置Swagger服務

app.UseSwagger(); //配置Swagger服務 app.UseSwaggerUI(c => {c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); });

?10.3:最終的Startup類如下

using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.PlatformAbstractions; using Swashbuckle.AspNetCore.Swagger; using System.IO; using ToDoApi.Interfaces;namespace ToDoApi {public class Startup{public Startup(IConfiguration configuration){Configuration = configuration;}public IConfiguration Configuration { get; }//添加服務public void ConfigureServices(IServiceCollection services){services.AddMvc();//添加Swagger服務services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new Info{Version = "v1",Title = "ToDo API",Description = "A simple example ASP.NET Core Web API",TermsOfService = "None",Contact = new Contact { Name = "Shayne Boyer", Email = "", Url = "https://twitter.com/spboyer" },License = new License { Name = "Use under LICX", Url = "https://example.com/license" }});var basePath = PlatformServices.Default.Application.ApplicationBasePath;var xmlPath = Path.Combine(basePath, "ToDoApi.xml");c.IncludeXmlComments(xmlPath);});services.AddSingleton<IToDoRepository, Services.ToDoRepository>();}// 配置服務public void Configure(IApplicationBuilder app, IHostingEnvironment env){app.UseSwagger();//配置Swagger服務app.UseSwaggerUI(c =>{c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");});//配置開發環境if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseMvc();}} }

10.4:啟動項設置為swagger啟動?

在launchSettings.json做如下修改

這樣你的項目用IIS Express啟動來就是swagger界面

11:最終效果

11.2:測試獲取數據的方法

12:對NetCore的理解還很淺,只是做了一個簡單的demo希望能幫到你,只是寫了mysql的,如果是要用SqlServer,則修改讀取SqlServerConnection的數據連接然后把數據倉儲里面的?MySql.Data.MySqlClien改成Sql server的就可以了

?13:demo連接:

https://files.cnblogs.com/files/gouguo/ToDoApi.rar

  

轉載于:https://www.cnblogs.com/gouguo/p/8961516.html

總結

以上是生活随笔為你收集整理的net Core做一个webApi的简单实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。