如果你要问我WebApi是干嘛,我只能说它是的给数据。哈哈哈哈哈,这几天也才刚刚了解了解关于WebApi的知识,今天就来谈谈吧。

1.创建WebApi项目

第一步:选择ASP.NET Web应用程序

第二步:选择WebApi,记得要取消勾选Https配置,点击创建

 第三步:创建完成后形成的项目结构

这里和ASP.NET MVC的目录结构看起来有点类似,其实还是有很大的不同的

在这里View视图其实不起什么作用。

下面来看看目录结构中有什么东西。

可以看到自动创建了两个控制器分别是Home和Values(这里的Student和User是我自己创建的)

进去看看。需要注意的是这里Home和下面介绍的Values是不同的控制器,哪里不同呢?等一下就知道啦

Home控制器:

Values控制器:

与Home控制器最大的区别就在于继承的控制器前者是Controller、后者是ApiController

可以看到这里分别有几个方法:Get(查询)、Post(新增)、Put(修改)、以及Delete(删除)

[FromBody]在这里的作用就是只接受从data中传递过来的参数,也就是其他传参方法比如QueryString形式的方法无法获取。

为什么系统自动帮我们创建了这四个方法呢?

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http; namespace Demo.Controllers
{
//WebAPI控制器
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
} // GET api/values/5
public string Get(int id)
{
return "value";
} // POST api/values
public void Post([FromBody]string value)
{
}
//FromBody指定数据来源必须是data中的数据而不是从QueryString过来的
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
} // DELETE api/values/5
public void Delete(int id)
{
}
}
}

这里的原有还有追溯到创建WebApi项目的时候

那就是RESTful HTTP服务模板

通过RESTful语义定义的四个方法,可以通过ajax请求进行调用并获得数据。

 下面我们去创建一个普通的Html页面和一个Student Api控制器以及一个Student类

Student类:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Demo.Models
{
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
}

Student控制器方法:

在注释中我也备注了RESTful使用规则和约束

 using Demo.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http; namespace Demo.Controllers
{
//WebAPI控制器
public class StudentController : ApiController
{
/// <summary>
/// Restful格式的数据提供方式 方法名要带着Get
/// Restful风格节省了方法名的编写,但是不适合~Login登录、上传 、修改头像、点赞等业务功能的实现
/// Restful只适合对某一个表的增删改查
/// </summary>
/// <returns></returns>
public Student Get()
{
return new Student() { Id = , Name = "黄朝" };
}
/// <summary>
///Get不能省略
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public string Get(string name)
{
return "参数是:" + name;
} public string GetAddress(string addname) {
return "地址参数是:" + addname;
}
/// <summary>
/// 在这里post是做新增操作
/// </summary>
/// <param name="stu">学生对象</param>
public void Post(Student stu)
{ }
/// <summary>
/// 修改操作
/// </summary>
/// <param name="id">修改的id</param>
/// <param name="stu">修改的对象</param>
public void Put(int id,Student stu)
{ }
/// <summary>
/// 删除
/// </summary>
/// <param name="id">根据id的删除</param>
public void Delete(int id)
{ }
}
}

Html页:

根据type不同的参数,调用后台Api的数据。可以作为对象参数传递也可以根据id作为参数传递

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="Scripts/jquery-3.3.1.js"></script>
<script>
$.ajax({
url: "/api/Student",
type: "get"
}).done(function (data) { console.log(data) }) //$.ajax({
// url: "/api/Student",
// type: "post",
// data: {
// ID: 1,
// Name:"abc"
// }
//}).done(function () {
// console.info("成功");
//}).fail(function () {
// console.info("失败");
//}) ///api/Student/1 1为Id
//$.ajax({
// url: "/api/Student/1",
// type: "put",
// data: {
// ID: 12,
// Name:"lisi"
// }
//}).done(function () {
// console.info("成功")
//}).fail(function () {
// console.info("失败")
//}) //$.ajax({
// url:"/api/Student/1"
// type: "delete"
//}).done(function () {rl: "/api/Student/1",
// console.info("成功")
//}).fail(function () {
// console.info("失败")
//})
</script>
</head>
<body> </body>
</html>

以上就是我对初次了解WebApi的一个学习总结,如果以上内容存在不足或错误代码,请指出,谢谢。

初始WebApi(1)的更多相关文章

  1. 初始WebApi 利用WebApi实现基础的CRUD

    微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService.它是简单,代码 ...

  2. asp.net webapi 给字段赋初始值DefaultValue 解决前端传空字符串后台接受不是“”而是NULL

    /// <summary> /// 存储ID /// </summary> public Guid SaveID { get; set; } /// <summary&g ...

  3. WebApi - 路由

    这段时间的博客打算和大家一起分享下webapi的使用和心得,主要原因是群里面有朋友说希望能有这方面的文章分享,随便自己也再回顾下:后面将会和大家分不同篇章来分享交流心得,希望各位多多扫码支持和点赞,谢 ...

  4. ABP源码分析三十五:ABP中动态WebAPI原理解析

    动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...

  5. Vue2.0 + Element-UI + WebAPI实践:简易个人记账系统

    最近正在学习Vue2.0相关知识,正好近期饿了么桌面端组件Element-UI发布,便动手做了一款简易个人记账系统,以达到实践及巩固目的. 1.开发环境 Win10 + VS2015 + Sqlser ...

  6. 【读书笔记】WebApi 和 SPA(单页应用)--knockout的使用

    Web API从MVC4开始出现,可以服务于Asp.Net下的任何web应用,本文将介绍Web api在单页应用中的使用.什么是单页应用?Single-Page Application最常用的定义:一 ...

  7. 解决webApi<Message>An error has occurred.</Message>不能写多个Get方法的问题

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.     本人最近在研究C#webAPI相关知识,发现webAPI不能够支持 ...

  8. ABP中动态WebAPI原理解析

    ABP中动态WebAPI原理解析 动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类 ...

  9. WebApi 插件式构建方案

    WebApi 插件式构建方案 WebApi 插件式构建方案 公司要推行服务化,不可能都整合在一个解决方案内,因而想到了插件式的构建方案.最终定型选择基于 WebApi 构建服务化,之所以不使用 WCF ...

随机推荐

  1. IPv6 时代如何防御 DDoS 攻击?

    在互联网世界,每台联网的设备都被分配了一个用于标识和位置定义的 IP 地址.20 世纪 90 年代以来互联网的快速发展,联网设备所需的地址远远多于可用 IPv4 地址的数量,导致了 IPv4 地址耗尽 ...

  2. go源码分析(五) 获取函数名和调用者的函数名

    参考资料 实现代码保存在我的github // input flag 1:FunName 2:CallerFunName func GetFuncName(flag int) string {     ...

  3. Python习题集(一)

    每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! 题目 有一个数据list of dict如下 a = [ {"}, {"}, {"}, ] 写入到本 ...

  4. Mybatis总结一之Mybatis项目的创建

    一.mybatis概念 Mybatis是对象和表之间映射关系的持久层框架. 二.Mybatis的导入与创建 第一步,创建web项目,引入mybatis依赖的jar包----mybatis-3.4.6. ...

  5. C++ 深拷贝和浅拷贝详解

    前言 在对象拷贝过程中,如果没有自定义拷贝构造函数,系统会提供一个缺省的拷贝构造函数,缺省的拷贝构造函数对于基本类型的成员变量,按字节复制,对于类类型成员变量,调用其相应类型的拷贝构造函数. 位拷贝( ...

  6. Python-操作XML文件

    一.python对XML文件的操作 目录 1.xml 创建 2.xml 数据查询 3.xml 数据修改 4.xml 数据删除 二. 1.xml 创建 import xml.etree.ElementT ...

  7. JAVA正则-检验QQ是否合法

    /* * 0不能开头,全数字,位数5-10位 * 123456 */ public static void checkQQ(){ String QQ = " 123456 "; / ...

  8. Elasticsearch系列---使用中文分词器

    前言 前面的案例使用standard.english分词器,是英文原生的分词器,对中文分词支持不太好.中文作为全球最优美.最复杂的语言,目前中文分词器较多,ik-analyzer.结巴中文分词.THU ...

  9. Jupyter的安装和基本使用

    1. 安装Jupyter pip install jupyter 2. Jupyter的初次使用 # 进入虚拟环境 workon ai # 输入命令 jupyter notebook 本地notebo ...

  10. [贪心,dp] Educational Codeforces Round 71 (Rated for Div. 2) C. Gas Pipeline (1207C)

    题目:http://codeforces.com/contest/1207/problem/C   C. Gas Pipeline time limit per test 2 seconds memo ...