1.明确思路

API是提供数据的接口,也可以理解为是一个方法,不过这个方法是对外公开的,可以通过Http请求来调用;

我们首先要知道的是数据都是存在数据里面的,所以我们需要一个访问数据的帮助类来提升我们访问数据库的效率;

在Microsoft.EntityFrameworkCore有一个DbContext类,提供了许多有关数据库操作的方法,增删改查等等,基本上你能想到的都有;

2.按照规范创建一个API

数据帮助有了之后,我们改通过怎么样的方式来调用这些帮助方法,来达到操作数据库的目的呢?

  1. 首先你需要创建一个API控制器
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;namespace BusinessIntelligence.Api.Controllers
{/// <summary>/// 第一个控制器/// </summary>[Route("api/[controller]")][ApiController]public class FirstController : ControllerBase{}
}

PS:如果你是一个空的项目,框架还没有搭建起来,你还需要创建一个ASP.NET Core Web API项目,然后在项目里面创建控制器

2.创建一个Action`

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;namespace BusinessIntelligence.Api.Controllers
{/// <summary>/// 第一个控制器/// </summary>[Route("api/[controller]")][ApiController]public class FirstController : ControllerBase{/// <summary>/// 第一个方法/// </summary>/// <returns></returns>public dynamic FirstAction(){return 1;}}
}

3.创建一个接口类

为什么要创建接口类呢?

解耦,好扩展,高内聚,低耦合这些都是接口的好处,但是前面这些我也不是很懂;

简单来说就是你写了一个方法,这个方法能在很多的地方用到,为了方便调用,把接口放到了一个容易调用的地方;

这对代码分类也很有帮助,为了不让代码堆积在一起;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace BusinessIntelligence.Interface
{public interface IFirstInterface{bool List();bool Add();bool Update();bool Delete();}
}

到这里我们成功的定义了一个接口,里面有4个方法,

List是列表,Add是添加,Update是更新,Delete是删除;

接下来我要说明的是,接口是抽象的,没有具体实现的,公共的;

没有具体实现肯定是不行的,我们还没有调用数据库操作方法;
所以我们要实现这个接口,创建一个实现他的类
4.创建一个实现接口的类

using BusinessIntelligence.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace BusinessIntelligence.Service
{public class FiastService : IFirstInterface{public bool Add(){throw new NotImplementedException();}public bool Delete(){throw new NotImplementedException();}public bool List(){throw new NotImplementedException();}public bool Update(){throw new NotImplementedException();}}
}

这就是一个实现了IFirstInterface接口的类,在这里我们可以定义增删改查的具体实现

PS:创建这个类也是有要求的,一般来说,解决方案里面会有一个专门存放这些操作数据库的类;

接下来我们讲怎么调用操作数据库的方法(微软提供那个),
5.调用操作数据库的方法

using BusinessIntelligence.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BusinessIntelligence.SqlServerHelper;
using BusinessIntelligence.Entities.SqlServer;namespace BusinessIntelligence.Service
{public class FirstService : IFirstInterface{private readonly IRepository<FirstModel> _repository;public FirstService(IRepository<FirstModel> repository){_repository = repository;}/// <summary>/// 列表/// </summary>/// <returns></returns>public List<FirstModel> List(){return _repository.GetAll().ToList();}}
}

这里我创建了一个私有的,只读的IRepository类型的一个变量,
这个类我们一般管它叫仓储(Repository),

在构造函数里面我们给这个变量赋值,这样就可以调用仓促中的方法了,
_repository.GetAll().ToList(),这段代码就是,调用仓储中的GetAll(获取所有数据)方法,并且转换成List列表的形式返回出去;

可以看到我改变了这个方法的返回值类型,来接受返回的数据,需要注意的是,接口FirstInterface,里面的这个方法的返回值类型也需要同步改变;

到这里我们一个方法的具体实现就完成了,在Controller里面调用这个方法,一个API就基本实现了;
6.在控制器中调用实现好的方法

using BusinessIntelligence.Interface;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;namespace BusinessIntelligence.Api.Controllers
{/// <summary>/// 第一个控制器/// </summary>[Route("api/[controller]")][ApiController]public class FirstController : ControllerBase{private readonly IFirstInterface _firstInterface;/// <summary>/// 构造函数/// </summary>/// <param name="firstInterface"></param>public FirstController(IFirstInterface firstInterface){_firstInterface = firstInterface;}/// <summary>/// 第一个方法/// </summary>/// <returns></returns>public dynamic FirstAction(){return _firstInterface.List();}}
}

这里跟上一步很像,创建一个私有的,只读的,IFirstInterface(接口)的变量,然后在构造函数中给他赋值,然后调用这个接口下面的方法,一个简单的API就完成了;

进阶知识

这里有一些我的文章中没有提到的一些进阶知识,感兴趣的可以搜索一下
依赖注入,DbContext的配置;

如何创建一个简单的API,建议萌新食用。相关推荐

  1. 使用Webtask.io创建一个简单的REST API端点

    by ismapro 由ismapro 使用Webtask.io创建一个简单的REST API端点 (Create a simple REST API endpoint using Webtask.i ...

  2. Spring MVC:使用基于Java的配置创建一个简单的Controller

    这是我博客上与Spring MVC相关的第一篇文章. 开端总是令人兴奋的,因此我将尽量简洁明了. Spring MVC允许以最方便,直接和快速的方式创建Web应用程序. 开始使用这项技术意味着需要Sp ...

  3. 使用 Vanilla JavaScript 框架创建一个简单的天气应用

    大家好,不知道大家听说过 Vanilla JavaScript 这款框架吗?最近我在浏览国外的一些技术网站时,这个词出现的频率实在是太高了,好多框架都宣称自己是基于 Vanilla JavaScrip ...

  4. python写rest服务_Python 如何创建一个简单的REST接口

    问题 你想使用一个简单的REST接口通过网络远程控制或访问你的应用程序,但是你又不想自己去安装一个完整的web框架. 解决方案 构建一个REST风格的接口最简单的方法是创建一个基于WSGI标准(PEP ...

  5. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序

    参考:https://www.cnblogs.com/jliangqiu2016/p/7642471.html Windows下编译TensorFlow1.3 C++ library及创建一个简单的T ...

  6. 搭建vue项目环境以及创建一个简单的vue的demo

    一.vue-cli脚手架的搭建步骤 1.首先,确定你的电脑上已经安装了nodejs,可以使用npm包管理器安装环境,如果还没有安装node环境,则需要安装node.js 这个很简单    默认点击安装 ...

  7. 利用thinkphp创建一个简单的站点

    本文我们将利用thinkphp创建一个简单的站点,这里所使用的thinkphp版本是5.0.24,这里是它的中文文档.如果有需要可以参考它的中文文档. thinkphp框架是一个典型的MVC框架,该框 ...

  8. C#游戏编程之创建一个简单的卷轴射击游戏

    前几天很多朋友要求贴一篇有关C#游戏开发的实例.本篇文章是创建一个简单的卷轴射击游戏开发实例,内容比较完整,分享给大家,不过篇幅有些长,可以慢慢看哈!本文除CSDN博客外,任何媒体和出版物禁止转载和使 ...

  9. 如何创建一个简单网页

    我们已经基本熟悉了HTML的格式,现在我们来尝试一下创建一个简单的网页. 1.创建一个.html格式的文件 选择一个文本编辑软件,我这里用的是Notepad++.在工具栏选择"languag ...

最新文章

  1. 破局:自动驾驶人才断层困境
  2. python项目实例初学者-适合初学者练手的 10 个 有趣Python项目
  3. Tensorflow 改进的MNIST手写体数字识别
  4. 一头扎进sql之多表操作
  5. Decide what you want,and go after it with everything you got!
  6. 【转】Caffe初试(八)Blob,Layer和Net以及对应配置文件的编写
  7. WEB:小宁写了一个登陆验证页面,随手就设了一个密码。
  8. 从一条微博揭秘专黑大V名人的定向攻击
  9. echarts+DataV的用法
  10. java小易——Servlet轻量级服务
  11. 【雅思口语】安娜口语学习记录 Part2
  12. 武汉大学无线传感实验床项目招标公告(开标时间2015年1月15日)
  13. java实现简单窗口小游戏“扫雷”
  14. 三维激光扫描后处理软件_边走边扫的三维激光扫描仪-
  15. ICLR2022系列解读之二:基于自适应邻居发现的人脸聚类的方法 Ada-NETS
  16. java 农历_Java 农历算法
  17. 使用padding-bottom设置div的高度跟父元素的宽度相关联
  18. linux学习笔记 linux内核6.0.2目录结构
  19. 35岁离开互联网,35岁真的是职场分水岭吗?
  20. PS小技巧之完美抠图

热门文章

  1. MD5对文件进行加密,可以支持大文件
  2. iOS崩溃日志符号化 UUID获取
  3. 神舟家用笔记本电脑服务指南及标准服务承诺
  4. redis实现定时任务php,Redis实战之实现定时执行任务
  5. 极简404页面模板|纯HTML【少量css】
  6. 收藏:软考知识点整理|信息系统工程监理与信息系统项目管理基础
  7. csv追加写入的时候报错Permission denied
  8. 解决因为在此系统上禁止运行脚本。(的问题)
  9. 基于单片机定时器/计数器的时钟设计及计数设计
  10. es管理器免root_ES浏览器专业版-ES文件浏览器专业版(ES File Explorer Pro)下载v4.2.3.6 特别版-西西软件下载...