热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ASP.NetWebAPI--简单实现增删改查

先理解一下WebAPI的概念,官方给的很详细:什么是WebAPI?在我们了解什么是WebAPI之前,让我们看看什么是API(应用程序编程接口)。根据维基百科的API定义:在计算机编程中

先理解一下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">&#10006;a>
        form>
    div>

    <p id="counter">p>

    <table>
        <tr>
            <th>Nameth>
            <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 = $("")
                          .append($("").text(item.MName))//MName 为数据库中表字段,电影名称
                          .append(
                            $("").append(
                              $("").on("click", function () {  //拼出button 修改
                                  editItem(item.Mid);   //调用修改方法,并将主键传入
                              })
                            )
                          )
                          .append(
                            $("").append(
                              $("").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
        /// 
        /// 查询数据
        /// 
        /// 
        public IEnumerable Get()
        {
            var list = db.MoviesInfomation;
            return list;
        }
        // POST api/values
        /// 
        /// 添加数据
        /// 
        /// 需添加的值
        public void Post(MoviesInfomation value)
        {
            db.MoviesInfomation.Add(value);
            db.SaveChanges();
        }

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

        // DELETE api/values/5
        /// 
        /// 删除数据
        /// 
        /// 需删除数据的主键
        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();就可以了!


推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
author-avatar
lanxians
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有