ASP.NET WebAPI --- 简单实现增删改查

先理解一下WebAPI的概念,官方给的很详细:

什么是Web API?

在我们了解什么是Web API之前,让我们看看什么是API(应用程序编程接口)。

根据维基百科的API定义:在计算机编程中,应用程序编程接口(API)是一组用于构建软件和应用程序的子例程定义,协议和工具。

简单来说,API是某种接口,它具有一组允许程序员访问应用程序,操作系统或其他服务的特定功能或数据的功能。

Web API顾名思义,是一个可以使用HTTP协议访问的Web上的API。这是一个概念,而不是一种技术。我们可以使用不同的技术(如Java,.NET等)构建Web API。

ASP.NET Web API

ASP.NET Web API是一个可扩展的框架,用于构建基于HTTP的服务,可以在不同的平台上访问,例如Web,Windows,移动等。它的工作方式与ASP.NET MVC Web应用程序的工作方式大致相同,除了它将数据作为响应而不是html视图发送。它就像一个Web服务或WCF服务,但例外是它只支持HTTP协议

从这张图可以看出,不同的客户端都可以访问这个接口,应该就是所谓的跨平台吧,只负责出数据,移动端,微信端,PC端,等等 都可以访问,再简单理解就是webpi就是一个出数据的接口,找到对应的接口,拿到对应的数据!

下边对webapi简单操作,在官方看过以后总结一下,调用webapi 实现对数据表的增删改查(暂时不用前端框架,所以拿到数据后用js动态拼出表格)

HTML代码:

<h2>WebApi增删改查</h2>
    <h3>添加</h3>
    <form action="javascript:void(0);" method="POST" onsubmit="addItem()">
        <input type="text" id="add-name" placeholder="New to-do">
        <input type="submit" value="Add">
    </form>

    <div id="spoiler">
        <h3>修改</h3>
        <form class="my-form">
            <input type="hidden" id="edit-id">
            <input type="text" id="edit-name">
            <input type="submit" value="Save">
            <a onclick="closeInput()" aria-label="Close">✖</a>
        </form>
    </div>

    <p id="counter"></p>

    <table>
        <tr>
            <th>Name</th>
            <th>修改</th>
            <th>删除</th>
        </tr>
        <tbody id="todos"></tbody>
    </table>

官方CSS样式:

<style>
        input[type=‘submit‘], button, [aria-label] {
            cursor: pointer;
        }

        #spoiler {
            display: none;
        }

        table {
            font-family: Arial, sans-serif;
            border: 1px solid;
            border-collapse: collapse;
        }

        th {
            background-color: #0066CC;
            color: white;
        }

        td {
            border: 1px solid;
            padding: 5px;
        }
    </style>

JavaScript代码:

<script src="../Scripts/jquery-1.10.2.min.js"></script>
    <script>
        const uri = "/api/values";  //定义全局接口路径
        let todos = null;    //定义全局变量,存放查出所有数据,在修改时候循环遍历,与传的主键进行比对
        function getCount(data) {  //数据条数 data.length
            const el = $("#counter");
            let name = "to-do";
            if (data) {
                if (data > 1) {
                    name = "to-dos";
                }
                el.text(data + " " + name);
            } else {
                el.text("No " + name);
            }
        }

        $(document).ready(function () {
            //页面就绪加载,调用查询数据方法
            getData();
            //修改提交事件
            $(".my-form").on("submit", function () {
                //获取新输入的内容,和修改数据的主键
                const item = {
                    MName: $("#edit-name").val(),
                    Mid: $("#edit-id").val()

                };
                $.ajax({
                    url: uri + "/" + $("#edit-id").val(),
                    type: "PUT",
                    accepts: "application/json",
                    contentType: "application/json",
                    data: JSON.stringify(item),
                    //修改成功,刷新页面
                    success: function (result) {
                        getData();
                    }
                });
                //关闭修改模块
                closeInput();
                return false;
            });
        });
        //数据的查询
        function getData() {
            $.ajax({
                type: "GET",
                url: uri,
                cache: false,
                success: function (data) {
                    const tBody = $("#todos");//通过主键,获得tBody,将查询的数据拼进来
                    $(tBody).empty();
                    getCount(data.length);//数据总数
                    //循环遍历数据,动态拼出表格,并将数据显示在表格,最后边为操作,分别是修改和删除
                    $.each(data, function (key, item) {
                        const tr = $("<tr></tr>")
                          .append($("<td></td>").text(item.MName))//MName 为数据库中表字段,电影名称
                          .append(
                            $("<td></td>").append(
                              $("<button>Edit</button>").on("click", function () {  //拼出button 修改
                                  editItem(item.Mid);   //调用修改方法,并将主键传入
                              })
                            )
                          )
                          .append(
                            $("<td></td>").append(
                              $("<button>Delete</button>").on("click", function () { //拼出button 删除
                                  deleteItem(item.Mid);  //调用删除方法,并将主键传入
                              })
                            )
                          );

                        tr.appendTo(tBody);//appendTo拼接
                    });

                    todos = data;//将查询的数据
                }
            });
        }
        //数据的添加
        function addItem() {
            //获取输入的内容
            const item = {
                MName: $("#add-name").val()
            };

            $.ajax({
                type: "POST",
                accepts: "application/json",
                url: uri,
                contentType: "application/json",
                data: JSON.stringify(item),
                error: function (jqXHR, textStatus, errorThrown) {
                    alert("Something went wrong!");
                },
                //添加成功,刷新页面,清空文本框的值
                success: function (result) {
                    getData();
                    $("#add-name").val("");
                }
            });
        }
        //数据的删除 id为数据的主键,删除完成刷新页面
        function deleteItem(id) {
            $.ajax({
                url: uri + "/" + id,
                type: "DELETE",
                success: function (result) {
                    getData();
                }
            });
        }
        //数据的修改 id为数据的主键
        function editItem(id) {
            //循环上边查询的所有数据,进行比对,成功将需修改的数据显示在文本框内
            $.each(todos, function (key, item) {
                if (item.Mid === id) {
                    $("#edit-name").val(item.MName);
                    $("#edit-id").val(item.Mid);
                }
            });
            //显示修改模块,修改完成后将关闭
            $("#spoiler").css({ display: "block" });
        }
        //关闭修改模块,什么时候修改数据,将显示,修改完成后将关闭
        function closeInput() {
            $("#spoiler").css({ display: "none" });
        }
    </script>

Controllers代码:

public class ValuesController : ApiController
    {
        DB_MoviesEntities db = new DB_MoviesEntities();
        // GET api/values
        /// <summary>
        /// 查询数据
        /// </summary>
        /// <returns></returns>
        public IEnumerable<MoviesInfomation> Get()
        {
            var list = db.MoviesInfomation;
            return list;
        }
        // POST api/values
        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="value">需添加的值</param>
        public void Post(MoviesInfomation value)
        {
            db.MoviesInfomation.Add(value);
            db.SaveChanges();
        }

        // PUT api/values/5
        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="id">修改数据的主键</param>
        /// <param name="value">新数据</param>
        public void Put(int id, MoviesInfomation value)
        {
            MoviesInfomation model = db.MoviesInfomation.Find(id);
            if (model != null)
            {
                model.MName = value.MName; ;
                db.Entry<MoviesInfomation>(model).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
            }
        }

        // DELETE api/values/5
        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="id">需删除数据的主键</param>
        public void Delete(int id)
        {
            MoviesInfomation model = db.MoviesInfomation.Find(id);
            if (model != null)
            {
                db.MoviesInfomation.Remove(model);
                db.SaveChanges();
            }
        }
    }

代码很简单,到这就结束了,另外,数据的传输默认的好像是xml 如果想改json 可以在Global.asax添加:

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();就可以了!

原文地址:https://www.cnblogs.com/dcy521/p/10902185.html

时间: 2024-10-12 21:30:18

ASP.NET WebAPI --- 简单实现增删改查的相关文章

Mybatis使用之简单的增删改查

Mybatis使用之简单的增删改查 一:简介 主要记录最简单的数据的增删改查.下一章会有各个操作详细一点的配置说明.以Author表为例(见上一博客).Author表没有关联任何其他表.也没有特殊字段. 二:映射规则 2.1.映射文件中的sql方法与对应的XxxMapper接口中的方法映射规则: a)映射文件的namespace的值是XxxMapper接口的全限定名.即包名+接口名称 b)映射文件中表示增删改查的标签(select.insert.delete.update)的id的值是接口中方法

EF5(6) 简单三层 增删改查

1:项目结构 2:每层添加对其他层的引用,这里我们把除了Web层之外的所有的层生成的文件都放到解决方案下的Library文件夹下,然后每个项目分别来引用里面的dll项目文件. 我们在Model项目上,右键属性->生成-> 在下面的输出里面,选择上一级的 Library文件夹 2.2 我们调整项目的生成顺序 ,在解决方案或者是任意项目上右键,选择 生成依赖项,调整各个项目的依赖,这样的目的就是调整项目的生成顺序. 注意,这里你选择依赖项,并没有给项目与项目之间增加了dll的引用,只是单纯的修改了

通过JDBC进行简单的增删改查

通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)update (5)select (6)delete 四.测试 五.代码分析 六.思考问题 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)

用CI框架向数据库中实现简单的增删改查

以下代码基于CodeIgniter_2.1.3版 用PHP向数据库中实现简单的增删改查(纯代码)请戳 http://www.cnblogs.com/corvoh/p/4641476.html CodeIgniter_2.1.3与PHP5.6的兼容问题请戳 http://www.cnblogs.com/corvoh/p/4649357.html 增: //insert//语法:$bool=$this->db->insert('表名',关联数组); $data=array( 'username'=

用PHP向数据库中实现简单的增删改查(纯代码,待完善)

<?php $con = mysql_connect("localhost:3306","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("test", $con); $result = mysql_query("SELECT * FROM user"); echo "

entity framework—简单的增删改查

应用程序对数据库执行CRUD时,通过entity framework方式,实际上是对DbContext的操作,DbContext是EF的入口,DbContext拿到对应的消息(CRUD)后,通过ORM中的Mapping来将对象O映射成数据库中的关系R. 下面就简单的实现一下利用entity framework实现简单的增删改查.首先要说明的是我已经建立了在解决方案中映射了数据库中表"Customer".所有的操作都是针对这张表. 1.增加 Customer customer = new

MyBatis学习--简单的增删改查

jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] args) { 2 Connection connection = null; 3 PreparedStatement preparedStatement = null; 4 ResultSet resultSet = null; 5 6 try { 7 //加载数据库驱动 8 Class.forName

通过JDBC进行简单的增删改查(以MySQL为例) 目录

通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)update (5)select (6)delete 四.测试 五.代码分析 六.思考问题 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)

JDBC实现最简单的增删改查

好久没写博客了,今天刚进入一家公司实习,在实习这段期间想把自己所学的东西通过博客记录下来 今天上午简单回顾了一下用JDBC实现最简单的增删改查 废话不多说,接下来就说明怎么用JDBC实现最简单的增删改查 我用的数据库是Mysql 1.创建一个MAVEN项目,需要导入两个jar包 分别为lombok 和 mysql 的jar包,在MAVEN的仓库网站可以轻松找得到 2.导入jar包之后 我们来进行数据库的连接操作 其步骤为 第一步:加载数据库驱动 Class.forName("com.mysql.