2019独角兽企业重金招聘Python工程师标准>>>

WebApi

1.创建实体类

public class Contact
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public DateTime LastModified { get; set; }
    }

2.操作实体类接口

public interface IContactRepository
    {
        IEnumerable<Contact> GetAllContacts();//获取全部数据
        Contact GetContact(string id);//根据id获取数据
        List<Contact> AddContact(Contact item);//添加数据
        bool RemoveContact(string id);//删除数据
        List<Contact> UpdateContact(Contact item);   //更新数据
    }

3.创建BLL并实现IContactRepository接口

public class ContactBLL : IContactRepository
    {
        public IEnumerable<Contact> GetAllContacts()
        {
            return ContactDAL.GetAllContactsDAL();
        }

public Models.Contact GetContact(string id)
        {
            return ContactDAL.GetContactDAL(id);
        }

public List<Contact> AddContact(Contact item)
        {
            return ContactDAL.AddContactDAL(item);
        }

public bool RemoveContact(string id)
        {
            return ContactDAL.RemoveContactDAL(id);
        }

public List<Contact> UpdateContact(Contact item)
        {
            return ContactDAL.UpdateContactDAL(item.Id,item);
        }
    }

4.创建DAL操作数据,因为没有写数据库,所以写了一个集合模拟数据库

public class ContactDAL
    {
        static List<Contact> list = new List<Contact>() { 
            new Contact(){Id = "1",Name = "小李",Phone = "13800000",Email = "222@qq.com",LastModified = DateTime.Now},
            new Contact(){Id = "2",Name = "小王",Phone = "13500000",Email = "333@qq.com",LastModified = DateTime.Now}
        };

public static IEnumerable<Contact> GetAllContactsDAL()
        {
            var a = list.Where(u => 1 == 1);
            return a;
        }

public static Contact GetContactDAL(string id)
        {
            var contact = list.Where(u => u.Id == id).FirstOrDefault<Contact>();//使用lamdba

return contact;

}

public static List<Contact> AddContactDAL(Contact item)
        {
            list.Add(item);
            return list;
        }

public static bool RemoveContactDAL(string id)
        {
            var a = from u in list where u.Id == id select u;//使用linq
            bool b = list.Remove(a.FirstOrDefault<Contact>());
            return b;
        }

public static List<Contact> UpdateContactDAL(string id,Contact item)
        {
            //var a = list.Where(u => u.Id == id).FirstOrDefault<Contact>();
            var a = from u in list where u.Id == id select u;
            Contact contact = a.FirstOrDefault<Contact>();
            contact.Name = item.Name;
            return list;
        }

}

5.创建api可以读写的控制器

[AllowCross]//webapi允许跨域访问
    [RoutePrefix("api/contact")]//配置路由
    public class ContactController : ApiController
    {
        private static readonly IContactRepository _contacts = new ContactBLL();

[HttpGet]
        public string GetContact()
        {
            return JsonConvert.SerializeObject(_contacts.GetAllContacts());
            
        }

[HttpGet]
        public Contact GetContact(string id)
        {
            return _contacts.GetContact(id);
            
        }

[HttpPost]
        public List<Contact> AddContact([FromBody]Contact value)
        {
            return _contacts.AddContact(value);
        }

[HttpPost]
        public List<Contact> UpdateContact([FromBody]Contact value)
        {
            return _contacts.UpdateContact(value);
        }

[HttpGet]
        public bool RemoveContact(string id)
        {
            return _contacts.RemoveContact(id);
        }
        
    }

6.路由配置(App_Start中的RouteConfig.cs)

修改:url: "{controller}/{action}/{id}",

7.配置跨域访问(App_Start中的WebApiConfig.cs)

添加改类

public class AllowCrossAttribute : System.Web.Http.Filters.ActionFilterAttribute
    {
        private const string Origin = "Origin";
        /// <summary>
        /// Access-Control-Allow-Origin是HTML5中定义的一种服务器端返回Response header,用来解决资源(比如字体)的跨域权限问题。
        /// </summary>
        private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
        /// <summary>
        ///  originHeaderdefault的值可以使 URL 或 *,如果是 URL 则只会允许来自该 URL 的请求,* 则允许任何域的请求
        /// </summary>
        private const string originHeaderdefault = "*";
        /// <summary>
        /// 该方法允许api支持跨域调用
        /// </summary>
        /// <param name="actionExecutedContext"> 初始化 System.Web.Http.Filters.HttpActionExecutedContext 类的新实例。</param>
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
        }
    }

Web端调用

@{
    ViewBag.Title = "请求web api";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>请求web api</h2>

<div>

<input type="button" value="获取全部数据" οnclick="GetContactAll()"/>
    <input type="button" value="根据id获取数据" οnclick="GetContactToId()" />
    <input type="button" value="添加数据" οnclick="AddContact()" />
    <input type="button" value="更新数据" οnclick="UpdateContact()" />
    <input type="button" value="删除数据" οnclick="RemoveContact()" />

</div>

<script>

var path = "http://localhost:32166/api/Contact/";

function GetContactAll() {

$.get(path + "GetContact", "", function (data) {

console.info(data);

},"json")

}

function GetContactToId() {

$.get(path + "GetContact", {id:"1"}, function (data) {

console.info(data);

},"json")

}

function AddContact() {
        
        var contact1 ={
            Id:"3",
            Name: "小楼",
            Phone: "123456",
            Email: "123@qq.com"
        }

var contact2 = {
            Id: "4",
            Name: "小楼",
            Phone: "123456",
            Email: "123@qq.com"
        }

//两种方式

$.post(path + "AddContact", contact1, function (data) {

console.info(data);

}, "json");//第一种

$.ajax({
            type: "post",
            url: path + "AddContact",
            dataType: "json",
            data: contact2,
            async: true,
            success: function (data) {
                console.info(data);
            }
        })//第二种
    }

function UpdateContact() {
        var contact= {
            Id:"1",
            Name: "小楼",
            Phone: "123456",
            Email: "123@qq.com"
        }
        
        $.post(path + "UpdateContact", contact, function (data) {
        
            console.info(data);

},'json')

}

function RemoveContact() {

$.get(path + "RemoveContact", { id: "1" }, function (data) {

console.info(data);

},'json');

}

</script>

转载于:https://my.oschina.net/u/3141521/blog/1825774

WebApi项目创建CURD相关推荐

  1. web api教程Java_WebApi项目创建CURD

    WebApi 1.创建实体类 public class Contact { public string Id { get; set; } public string Name { get; set; ...

  2. .net5创建WebApi项目入门教程

    前言 .net5已经出来好久了,我刚好要做一个.net5的项目,于是打算写一个关于.net5的入门教程 1.开发环境准备 要使用.net5进行开发,要下载.net5的sdk和vs2019(版本为:v1 ...

  3. 搭建MVC及WebAPI项目框架时碰到的问题集合

    搭建MVC及WebAPI项目框架时碰到的问题集合 阅读169次 2013/5/31 4:27:26 前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友 ...

  4. Abp VNext 项目创建简介

    文章目录 简介 项目创建 关于 module 项目的简单说明 简单优化项目 1.移动端项目删除 2.*.sln.DotSettings 3.*.HttpApi.Host 的调整 4.*.HttpApi ...

  5. 为WebApi项目添加注册功能:问题与解决的思维流程

    为WebApi项目增加用户注册功能 创建时间:2012年10月31日(星期三) 凌晨3:26 | 分类:Web演练 | 字数:3438  | 发送到我的Qzone | 另存为... | 打印 | 添加 ...

  6. 01-创建项目 创建数据表-类别管理--添加类别--持久层

    文章目录 1. 关于此项目 2. 关于项目的开发流程 3. 创建数据库与数据表 4. 关于Project与Module 5. 创建Project 6. 商品管理模块项目 7. 关于编写代码 8. 类别 ...

  7. 【Python3.6+Django2.0+Xadmin2.0系列教程之一(入门篇-上)】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 转载请注明 ...

  8. 如何从多个项目创建 ASP.NET 应用程序以进行组开发

    开发大型网站经常会涉及多个开发人员.这些开发人员必须能够在互不干扰的情况下开发 Web 应用程序的特定部分,同时仍能够在项目过程中与他人相互协作.为此,您可以在 Visual Studio .NET ...

  9. 修改 Android Studio 相关模板,以加快项目创建时构建速度,支持Mac,Windows,Linux...

    2019独角兽企业重金招聘Python工程师标准>>> 注: 本文主要在Mac中操作,Windows,Linux操作类似.默认创建Empty Activity项目 Android S ...

最新文章

  1. shell + mysql
  2. Nginx使用webbench进行压力测试
  3. python gc内存_禁用 Python GC,Instagram 性能提升10%
  4. CV之LabelImg:图片标注工具之LabelImg(图像标注工具)的简介、安装、使用方法详细攻略
  5. 倒计时2天!年末最大AI开发者盛典来袭,快来报名
  6. 万网独享主机Apache为Ecshop商城添加404页面详解
  7. 你一直憋着的那个屁,放出来时真的有人知道吗?我先告诉你憋着不放的屁会到哪去……...
  8. ssl1762-工厂的烦恼【图论,最短路变形(最长路)】
  9. CentOS下的Mysql的安装和使用
  10. 阿里云数据库开源发布:PolarDB HTAP的功能特性和关键技术
  11. 使用隐含参数testMappingSpeed排查GoldenGate抽取慢的步骤
  12. Delphi如何获取本机IP地址
  13. 经典数学书目、各数学分支入门清单
  14. java各种加密算法_Java中的各种加密算法
  15. 项目管理软件浮出水面(转)
  16. Android开发中的图片压缩
  17. android平板投屏,安卓手机投屏到平板
  18. dlna移植android系统,android系统的dlna开发
  19. 豆沙绿护眼色样式在html中的代码
  20. scratch下实现子弹追踪特效

热门文章

  1. 浅谈JavaScript继承
  2. 牛客网Java刷题知识点之数组、链表、哈希表、 红黑二叉树
  3. 业内大佬怒喷 Windows 10 Cloud:最大的流氓软件!
  4. redis之(十一)redis实现缓存的功能
  5. ListBox的使用
  6. citrix POC环境准备
  7. Navicat 10 for SQL Server - 绿色中文版
  8. 将Windows下的文件同步到Linux下
  9. PHP 多参数方法的重构
  10. Vue nextTick 机制