WebApi项目创建CURD
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相关推荐
- web api教程Java_WebApi项目创建CURD
WebApi 1.创建实体类 public class Contact { public string Id { get; set; } public string Name { get; set; ...
- .net5创建WebApi项目入门教程
前言 .net5已经出来好久了,我刚好要做一个.net5的项目,于是打算写一个关于.net5的入门教程 1.开发环境准备 要使用.net5进行开发,要下载.net5的sdk和vs2019(版本为:v1 ...
- 搭建MVC及WebAPI项目框架时碰到的问题集合
搭建MVC及WebAPI项目框架时碰到的问题集合 阅读169次 2013/5/31 4:27:26 前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友 ...
- Abp VNext 项目创建简介
文章目录 简介 项目创建 关于 module 项目的简单说明 简单优化项目 1.移动端项目删除 2.*.sln.DotSettings 3.*.HttpApi.Host 的调整 4.*.HttpApi ...
- 为WebApi项目添加注册功能:问题与解决的思维流程
为WebApi项目增加用户注册功能 创建时间:2012年10月31日(星期三) 凌晨3:26 | 分类:Web演练 | 字数:3438 | 发送到我的Qzone | 另存为... | 打印 | 添加 ...
- 01-创建项目 创建数据表-类别管理--添加类别--持久层
文章目录 1. 关于此项目 2. 关于项目的开发流程 3. 创建数据库与数据表 4. 关于Project与Module 5. 创建Project 6. 商品管理模块项目 7. 关于编写代码 8. 类别 ...
- 【Python3.6+Django2.0+Xadmin2.0系列教程之一(入门篇-上)】环境搭建及项目创建
由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 转载请注明 ...
- 如何从多个项目创建 ASP.NET 应用程序以进行组开发
开发大型网站经常会涉及多个开发人员.这些开发人员必须能够在互不干扰的情况下开发 Web 应用程序的特定部分,同时仍能够在项目过程中与他人相互协作.为此,您可以在 Visual Studio .NET ...
- 修改 Android Studio 相关模板,以加快项目创建时构建速度,支持Mac,Windows,Linux...
2019独角兽企业重金招聘Python工程师标准>>> 注: 本文主要在Mac中操作,Windows,Linux操作类似.默认创建Empty Activity项目 Android S ...
最新文章
- shell + mysql
- Nginx使用webbench进行压力测试
- python gc内存_禁用 Python GC,Instagram 性能提升10%
- CV之LabelImg:图片标注工具之LabelImg(图像标注工具)的简介、安装、使用方法详细攻略
- 倒计时2天!年末最大AI开发者盛典来袭,快来报名
- 万网独享主机Apache为Ecshop商城添加404页面详解
- 你一直憋着的那个屁,放出来时真的有人知道吗?我先告诉你憋着不放的屁会到哪去……...
- ssl1762-工厂的烦恼【图论,最短路变形(最长路)】
- CentOS下的Mysql的安装和使用
- 阿里云数据库开源发布:PolarDB HTAP的功能特性和关键技术
- 使用隐含参数testMappingSpeed排查GoldenGate抽取慢的步骤
- Delphi如何获取本机IP地址
- 经典数学书目、各数学分支入门清单
- java各种加密算法_Java中的各种加密算法
- 项目管理软件浮出水面(转)
- Android开发中的图片压缩
- android平板投屏,安卓手机投屏到平板
- dlna移植android系统,android系统的dlna开发
- 豆沙绿护眼色样式在html中的代码
- scratch下实现子弹追踪特效