.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)
前言:
自从.net core问世之后,就一直想了解。但是由于比较懒惰只是断断续续了解一点。近段时间工作不是太忙碌,所以偷闲写下自己学习过程。慢慢了解.net core 等这些基础方面学会之后再用.net core写一个项目,前期文章都是为之后的项目做准备。同时也希望这些基础文章能帮助更多的想入手 .net core的小白。(文中如有不正确地方欢迎各位指正)
开发工具vs2017
数据库 mysql8.0
.net core环境 .net core2.1
1】model层建立
先新建一个项目:左侧目录选择其他项目类型=》vs解决方案=》空白方案=》自己随意去个名字

添加一个core 内库作为model层,

由于本次数据库使用的是mysql,所以在model层中通过nuget分别引用Microsoft.EntityFrameworkCore.Tools和Pomelo.EntityFrameworkCore.MySql(注意两个版本必须一致 这里选自2.1.4版本,之前博主引用版本不对,直接导致连接输出出错)

然后分别添加一个model类和数据库上下文类,本demo创建一张user表

数据库上下文类DataBase
using Microsoft.EntityFrameworkCore; namespace Core.Model
{
public class DataBase : DbContext
{
//构造方法
public DataBase(DbContextOptions<DataBase> options)
: base(options)
{ } #region 数据区域
public DbSet<User> User { get; set; }
#endregion }
}
至此,model创建完毕,后期各位可以根据自己的需要自己拓展
2】创建api层
首先在解决方案中创建api层,流程如下图

建议新手选择api这一项,创建完毕之后,项目结构如右图


别忘记在api层添加对model层的引用

首先来appsettings.json配置数据库,127.0.0.1代表本地计算机

配置完毕之后来到 Startup.cs的ConfigureServices方法将数据库连接配置好,如果此段代码有飘红部分,只需要将其缺失的地方引用(需要引用
using Microsoft.EntityFrameworkCore;和using Core.Model;)

//mysql连接
services.AddDbContextPool<DataBase>(options =>
options.UseMySql(Configuration.GetConnectionString("MySqlConnection")));
注意括号中的MySqlConnection就是appsettings.json中写连接数据库字符串的前缀

接下来将原有的控制器删除,自己添加一个UserController.cs
控制器中代码(包含增删查改CRUD)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Core.Model;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; namespace Core.api.Controllers
{
[Produces("application/json")]
[Route("api/admin/[controller]")]
[ApiController]
public class UserController : Controller
{ private readonly DataBase _context;
public UserController(DataBase context)
{
_context = context;
}
#region base /// <summary>
/// 获取单个
/// </summary>
/// <param name="id">Id</param>
/// <returns></returns>
[HttpGet("{id}")]
public JsonResult GetById(string id)
{
var tt = _context.Set<User>().Where(c => c.id == id).ToList();
//_context.Set<User>().Add(us);
//_context.SaveChanges();
return Json(tt);
}
/// <summary>
/// 添加
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost]
public JsonResult Add(User entity = null)
{
_context.Set<User>().Add(entity);
int num = _context.SaveChanges(); if (entity == null)
return Json("参数为空");
if (num > ) { return Json("成功"); }
else { return Json("失敗"); }
}
/// <summary>
/// 编辑
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPut]
[Route("User")]
public JsonResult Update(User entity = null)
{ _context.Set<User>().Update(entity);
int num = _context.SaveChanges();
if (entity == null)
return Json("参数为空");
if (num > ) { return Json("成功"); }
else { return Json("失敗"); }
} /// <summary>
/// 删除
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpDelete]
public JsonResult Dels(string ids = null)
{
if (ids.Length == )
return Json("参数为空");
var tt = _context.Set<User>().Where(c => c.id == ids).First();
_context.Set<User>().Remove(tt);
int num = _context.SaveChanges();
if (num > ) { return Json("成功"); }
else { return Json("失敗"); }
}
#endregion
}
}
自此一个简单的api基本完成,需要运行检验还需要一个步骤。
3】swagger
为了检测接口运行,这里选择swagger
首先在api层通过nuget引用Swashbuckle.AspNetCore

然后右键单击core.api项目选择属性,打开一个新面板之后选择左侧的生成菜单=》扎到输出提示。选择输出路径bin\Debug\netcoreapp2.1\=》勾选xml文档文件

然后回到 Startup.cs ,分别加入以下代码
此处需要先在nuget中引用 Microsoft.Extensions.PlatformAbstractions
注意 上文中生成的core.api.xml写入到下列方法中 ,名字要保持一致,否者报错
#region Swagger
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1.1.0",
Title = "Ray WebAPI",
Description = "框架集合",
TermsOfService = "None",
Contact = new Swashbuckle.AspNetCore.Swagger.Contact { Name = "RayWang", Email = "2271272653@qq.com", Url = "http://www.cnblogs.com/RayWang" }
});
//添加读取注释服务 nuget Microsoft.Extensions.PlatformAbstractions
var basePath = PlatformServices.Default.Application.ApplicationBasePath;
var xmlPath = Path.Combine(basePath, "Core.api.xml");//此处为生成xml文档
c.IncludeXmlComments(xmlPath); });
#endregion

#region Swagger
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1");
});
#endregion

,最后来到launchSettings.json修改以下代码,将api/value修改为swagger,表示项目已启动就显示Swagger的主页面,而不用通过输入路劲

因为本项目是codefirst,所以最后在项目启动之前别忘记在nuget控制台运行以下两行代码
先输入:Add-Migration MyFirstMigration(名字。这里随意取未MyFirstMigration)
在输入:Update-Database 补充一个小问题,博主首次在nuget控制台输入
Add-Migration MyFirstMigration的时候不知道为什么报错,后来先输入Add-Migration 然后随意取一个名字才成功。之前未遇见过。如果遇到此类错误的读者可以先试试我这个办法。

最后】最后运行代码,就会看到页面如下

添加一条数据进行尝试,单击绿色post=》单击try it out =》输入数据(这里我全部输入“测试”)=》单击execute

然后鼠标下滑,就可以看到返回的结果

然后进入数据库验证,发现数据插入成功

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)的更多相关文章
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- .Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布
.Net Core 跨平台:一个简单程序的多平台(windows.Linux.osx)发布 .Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing ...
- Maven+SpringMVC+Dubbo 简单的入门demo配置
转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...
- ASP.NET CORE API Swagger+IdentityServer4授权验证
简介 本来不想写这篇博文,但在网上找到的文章博客都没有完整配置信息,所以这里记录下. 不了解IdentityServer4的可以看看我之前写的入门博文 Swagger 官方演示地址 源码地址 配置Id ...
- IdentityServer4实现.Net Core API接口权限认证(快速入门)
什么是IdentityServer4 官方解释:IdentityServer4是基于ASP.NET Core实现的认证和授权框架,是对OpenID Connect和OAuth 2.0协议的实现. 通俗 ...
- 通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用
REFERENCE FROM : http://www.cnblogs.com/artech/archive/2012/07/04/Knockout-web-api.html 较之面向最终消费者的网站 ...
- asp .net core中swagger的简单使用
相信swagger大家不太陌生,简单来说就是把web api接口以ui的形式呈现到页面上,供方便调用和展示.这边文章就带大家初步简单使用swagger. (1)首先需要安装包:Swashbuckle. ...
- spring boot一个简单用户管理DEMO
概述 该Demo旨在部署一个简单spring boot工程,包含数据编辑和查看功能 POM配置 <?xml version="1.0" encoding="UTF- ...
- 实现一个简单的虚拟demo算法
假如现在你需要写一个像下面一样的表格的应用程序,这个表格可以根据不同的字段进行升序或者降序的展示. 这个应用程序看起来很简单,你可以想出好几种不同的方式来写.最容易想到的可能是,在你的 JavaScr ...
随机推荐
- 我眼中的 Nginx(六):深入 Nginx/Openresty 服务里的 DNS 解析
张超:又拍云系统开发高级工程师,负责又拍云 CDN 平台相关组件的更新及维护.Github ID: tokers,活跃于 OpenResty 社区和 Nginx 邮件列表等开源社区,专注于服务端技术的 ...
- 从壹开始微服务 [ DDD ] 之十一 ║ 基于源码分析,命令分发的过程(二)
缘起 哈喽小伙伴周三好,老张又来啦,DDD领域驱动设计的第二个D也快说完了,下一个系列我也在考虑之中,是 Id4 还是 Dockers 还没有想好,甚至昨天我还想,下一步是不是可以写一个简单的Angu ...
- 浏览器插件使用socks5代理
服务端测试,经常会遇到需要通过代理访问的情景,比如公司内网不能访问测试环境,这时可以通过socks5代理来解决. 一.使用Chrome浏览器访问 1. 下载并安装SwitchyOmega插件 ...
- [译]PEP 342--增强型生成器:协程
PEP原文 : https://www.python.org/dev/peps/pep-0342/ PEP标题: Coroutines via Enhanced Generators PEP作者: G ...
- 深度解密Go语言之关于 interface 的10个问题
目录 1. Go 语言与鸭子类型的关系 2. 值接收者和指针接收者的区别 方法 值接收者和指针接收者 两者分别在何时使用 3. iface 和 eface 的区别是什么 4. 接口的动态类型和动态值 ...
- 《k8s-1.13版本源码分析》- 调度器设计
本文原始地址:https://farmer-hutao.github.io/k8s-source-code-analysis/core/scheduler/desigh.html github项目地址 ...
- 使用工厂模式解耦和IoC思想
使用工厂模式解耦. 一.需求场景: 某一层功能需要改动,但其他层代码不变 实现类1:MyDaoImpl查询自己的数据库. ====改为====> 实现类2:MyDaoImpl2从其它地址得到数据 ...
- js 异步转同步
在项目中有些逻辑或者请求依赖另一个异步请求,大家常用的方法是回调函数.现在有个高大上的解决方案:await async . async 是“异步”的简写,而 await 可以认为是 async wai ...
- Oracle数据库知识要点
一.卸载安装(来自百度经验) 完全卸载: 1. 停止相关服务 2. 运行Universal Installer,卸载产品 3. 清理注册表 4. 重启电脑,删除目录(Oracle文件夹和app文件夹) ...
- 去除inline-block元素间的间距
一.现象描述 真正意义上的inline-block水平呈现的元素间,换行显示或者空格隔开的情况下会有间距,这是因为浏览器在解析时,会将换行等读取成一个空格导致. 二.移出空格的方法 ① 我们可以去掉元 ...