.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)

摘要:
但是由于比较懒惰只是断断续续了解一点。近段时间工作不是太忙碌,所以偷闲写下自己学习过程。慢慢了解.netcore等这些基础方面学会之后再用.netcore写一个项目,前期文章都是为之后的项目做准备。同时也希望这些基础文章能帮助更多的想入手.netcore的小白。

前言:

自从.net core问世之后,就一直想了解。但是由于比较懒惰只是断断续续了解一点。近段时间工作不是太忙碌,所以偷闲写下自己学习过程。慢慢了解.net core 等这些基础方面学会之后再用.net core写一个项目,前期文章都是为之后的项目做准备。同时也希望这些基础文章能帮助更多的想入手 .net core的小白。(文中如有不正确地方欢迎各位指正)

开发工具vs2017

数据库 mysql8.0

.net core环境.net core2.1

1】model层建立

先新建一个项目:左侧目录选择其他项目类型=》vs解决方案=》空白方案=》自己随意去个名字

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第1张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第2张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第3张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第4张

数据库上下文类DataBase

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第5张.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第6张
usingMicrosoft.EntityFrameworkCore;
namespaceCore.Model
{
    public classDataBase : DbContext
    {
        //构造方法
        public DataBase(DbContextOptions<DataBase>options)
            : base(options)
        { }
        #region 数据区域
        public DbSet<User> User { get; set; }
        #endregion
    }
}
View Code

至此,model创建完毕,后期各位可以根据自己的需要自己拓展

2】创建api层

首先在解决方案中创建api层,流程如下图

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第7张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第8张.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第9张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第10张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第11张

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

using Microsoft.EntityFrameworkCore;和using Core.Model;)

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第12张

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第5张.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第14张
   //mysql连接
            services.AddDbContextPool<DataBase>(options =>
options.UseMySql(Configuration.GetConnectionString("MySqlConnection")));
View Code

注意括号中的MySqlConnection就是appsettings.json中写连接数据库字符串的前缀

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第15张

接下来将原有的控制器删除,自己添加一个UserController.cs.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第16张

控制器中代码(包含增删查改CRUD)

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第5张.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第18张
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Threading.Tasks;
usingCore.Model;
usingMicrosoft.AspNetCore.Http;
usingMicrosoft.AspNetCore.Mvc;
namespaceCore.api.Controllers
{
    [Produces("application/json")]
    [Route("api/admin/[controller]")]
    [ApiController]
    public classUserController : Controller
    {
        private readonlyDataBase _context;
        publicUserController(DataBase context)
        {
            _context =context;
        }
        #region base
        /// <summary>
        ///获取单个
        /// </summary>
        /// <param name="id">Id</param>
        /// <returns></returns>
        [HttpGet("{id}")]
        public JsonResult GetById(stringid)
        {
            var tt = _context.Set<User>().Where(c => c.id ==id).ToList();
            //_context.Set<User>().Add(us);
            //_context.SaveChanges();
            returnJson(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 > 0) { 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 > 0) { return Json("成功"); }
            else { return Json("失敗"); }
        }
        /// <summary>
        ///删除 
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
[HttpDelete]
        public JsonResult Dels(string ids = null)
        {
            if (ids.Length == 0)
                return Json("参数为空");
            var tt = _context.Set<User>().Where(c => c.id ==ids).First();
            _context.Set<User>().Remove(tt);
            int num =_context.SaveChanges();
            if (num > 0) { return Json("成功"); }
            else { return Json("失敗"); }
        }
        #endregion
    }
}
View Code

自此一个简单的api基本完成,需要运行检验还需要一个步骤。

3】swagger

为了检测接口运行,这里选择swagger

首先在api层通过nuget引用Swashbuckle.AspNetCore

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第19张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第20张

然后回到Startup.cs ,分别加入以下代码

此处需要先在nuget中引用Microsoft.Extensions.PlatformAbstractions

注意 上文中生成的core.api.xml写入到下列方法中 ,名字要保持一致,否者报错

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第5张.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第22张
     #region Swagger
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", newInfo
                {
                    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
View Code

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第23张

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第5张.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第25张
  #region Swagger
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1");
            });
            #endregion
View Code

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第26张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第27张

因为本项目是codefirst,所以最后在项目启动之前别忘记在nuget控制台运行以下两行代码

先输入:Add-Migration  MyFirstMigration(名字。这里随意取未MyFirstMigration)
 在输入:Update-Database  
补充一个小问题,博主首次在nuget控制台输入
Add-Migration  MyFirstMigration的时候不知道为什么报错,后来先输入Add-Migration  然后随意取一个名字才成功。之前未遇见过。如果遇到此类错误的读者可以先试试我这个办法。

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第28张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第29张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第30张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第31张

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

.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)第32张

免责声明:文章转载自《.net core api +swagger(一个简单的入门demo 使用codefirst+mysql)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇打印 PRINTasyncio之Coroutines,Tasks and Future下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

EF core的原生SQL查询以及用EF core进行分页查询遇到的问题

在用.net core进行数据库访问,需要处理一些比较复杂的查询,就不得不用原生的SQL查询了,然而EF Core 和EF6 的原生sql查询存在很大的差异。 在EF6中我们用SqlQuery和ExecuteSqlCommand进行sql语句的执行,而在EF Core中我们则使用FromSql和ExecuteSqlCommand 一.ExecuteSqlC...

阿里云人脸比对API封装

这是根据封装是根据阿里云官方给的Demo进行修改的,当时是因为编写微信小程序云函数需要使用到阿里云人脸比对接口,才对其进行封装的。 记录下来,方便下次使用。 复制下来可以直接使用。 用到的依赖如下,使用npm安装: request url crypto 1 /** 2 * 文件说明:阿里云人脸比对API封装 3 */ 4 5 var request...

CentOS 7 安装 .Net Core 2.0 详细步骤

        轰轰烈烈的Core 热潮,从部署环境开始。参照了网上不少前辈的教程,也遇到不少的坑,这边做个完整的笔记。 一、构建.Net core 2的应用程web发布,因为是用来测试centos上的core 环境,先直接用vs17自带的core实例。   发布   二、部署CentOS 7的core环境 1、连接并启动之前安装的虚拟机,“root”登...

数据存储

iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3Core Data应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应...

ASP.NET Core MVC中Hangfire及EF Core的简单使用

项目中可能要实现定时读写数据,所以了解了一下Hangfire,并简单尝试使用,同时又实践了一波EF Core的DB First模式 Hangfire 1.新建ASP.NET Core项目 2.Nuget安装Hangfire的包,因为我Hangfire配置用数据库使用的PostgreSql,所以添加的pg相关的引用,Hangfire官方支持SQL Serve...

.Net Core Swagger 给类库模型添加注解

因为公司流程的需要,需要给每个API的Request 和Response 模型及属性加上注解,发现Api项目依赖的Model 类库中的/// Summy的注解并没有作用。 通过翻资料和实践。发现借助 Swashbuckle.AspNetCore.Annotations 包可以实现。 步骤: 在模型字段加上 [SwaggerSchema("UserId",...