.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 ...
随机推荐
- rand ----MATLAB (经典)
最近一直在学习matlab,我相信有一些同学已经发现,最近更新的关于matlab的内容比较多, 希望能够帮助到未来的小学弟学妹们! 永远爱你们的 ----新宝宝 rand 均匀分布的随机数全页折叠 语 ...
- java编写词法分析器
词法分析器就是通过扫描一段程序判断是否是关键字.标识符.常数.分界符.运算符.一般分为一符一种和经典五中: 这里我用的是经典五中,此词法分析器是用java编写的: /* 保留字|关键字:1 操作符|运 ...
- 用python把一个txt文件中所有逗号,替换成空格?
string = "word 2 3 4 5 6 7" string = ",".join(string.split()) import numpy as np ...
- 8000个JQuery特效(插件)
各式各样的JQuery场景实现,可供项目使用,请注意插件版本和浏览器适配 下面是下载地址
- Spark学习之编程进阶总结(二)
五.基于分区进行操作 基于分区对数据进行操作可以让我们避免为每个数据元素进行重复的配置工作.诸如打开数据库连接或创建随机数生成器等操作,都是我们应当尽量避免为每个元素都配置一次的工作.Spark 提供 ...
- .NET Core Dapper操作mysql数据库
前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...
- Protocol Buffers(3):阅读一个二进制文件
目录 Proto文件 序列化 二进制文件解析 反序列化 参考 博客:blog.shinelee.me | 博客园 | CSDN 这篇文章中,我们将定义一个相对复杂的数据结构,直接分析其序列化后的二进制 ...
- 产品管理开发之Git工作流和分支规范推荐
前言 无论是开源项目还是内部项目,使用Git都是大势所趋,尤其是在产品管理这块,使用Git大大提高了开发效率和产品的交付频率.本篇,针对Git的工作流和分支使用,进行了一些推荐. 目录 1 产 ...
- falkonry
falkonry.com/ 2019 Top 100 AI companies in the world
- Exp5 Msf基础应用 20164312 马孝涛
1.本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击,如ms11_ ...