当前位置: 首页 > 编程日记 > 正文

WebAPI初探

  由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章。因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主要还是开发WebForm的项目,所以MVC的东西也就逐渐的淡忘了。

  经过这一段时间的系统学习,真的觉得MVC3相比于之前的MVC2还有WebForm来说,确实有一种让人欲罢不能爽歪歪的感觉。特别是Razor语法、Linq表达式等的结合运用。

  为了将学习过程中遇到的一些值得留意的问题和知识点进行一个很好地整理,所以打算把对MVC的学习过程整理成一个文章系列,同时也希望能帮助那些初学ASP.NET MVC的童鞋们。可能文章的风格不会像其他文章那样讲的很深,主要还是通过实例来表达吧。由于自己也是初学,文章中难免有错误,也希望各位高手能够多多指教,大家共同学习。

  好了,废话不多说,进入正题。

  个人觉得在MVC中,路由规则算是比较重要的一点。记得之前曾看过dudu站长的一篇文章 HttpClient + ASP.NET Web API, WCF之外的另一个选择 ,对于用惯了“html+ajax+一般处理程序” 来开发项目的我来说,觉得这应该算是另一种更加高端的处理数据请求的方式吧,所以,今天我们就从这种“精简版的WebAPI” 开始说起。

  首先,先创建一个“ASP.NET 空Web应用程序” :

  然后添加对 “System.Web.Http” 和 “System.Web.Http.WebHost” 的引用:

  再添加对“System.Net.Http” 的引用:

  由于需要用到对Json数据的处理,所以还要添加对 “Newtonsoft.Json” 的引用。

这里需要注意一下:

如果开始不添加对“Newtonsoft.Json”的引用,在项目运行时就会报错,具体报错原因稍后再说。

  对四个类库的引用:

  然后新建一个类,用于注册默认路由映射,这里类名为 WebAPIConfig :

  添加Global.asax文件,在 Application_Start 方法中 初始化路由映射:

        protected void Application_Start(object sender, EventArgs e){//在应用程序启动时注册路由映射  WebAPIConfig.Register(GlobalConfiguration.Configuration); }

记得引入命名空间:

using System.Web.Http;

  注意:

上面我们提到,如果开始时不引用 “Newtonsoft.Json”,那么在运行时 注册路由映射这里就会报错:

 创建名为Controller的文件夹,然后添加一个类且类名以 Controller结尾,这里为UserController 。让这个类继承自 ApiController 基类:

  创建名为Model的文件夹用来存放实体类,添加Users类:

  在 UserController 类中,添加一个 GetUser() 方法,模拟一些数据:

复制代码
//引入命名空间
using System.Web.Http;
using X_1_FirstWebAPI.Model; namespace X_1_FirstWebAPI.Controller { public class UserController : ApiController { public List<Users> GetUser() { var userList = new List<Users> { new Users{ Id=1,UName="张三",UAge=12,UAddress="海淀区"}, new Users{Id=2,UName="李四",UAge=23,UAddress="昌平区"}, new Users{Id=3,UName="王五",UAge=34,UAddress="朝阳区"} }; var temp = (from u in userList select u).ToList(); return temp; } } }
复制代码

  我们之前添加的路由规则为 "api/{controller}/{action}/{id}" ,所以,我们在浏览器中访问数据的url为 http://localhost:****/api/controllerName/actionName  的形式,在这里即是 api/user/getuser :

  OK,到这里,精简版的WebAPI项目就完成了,这个应该对于大部分.NET程序员来说理解起来是很简单的。

那下一篇文章我们就深入地来聊一聊如何调用WebAPI请求后台数据吧!

下载代码

http://www.cnblogs.com/babycool/p/3861277.html

相关文章:

ROS控制无人机offboard模式

在确保已经安装ROS以及Mavros情况下使用下列步骤 1.打开PX4源码程序&#xff0c;运行gazebo cd Firmware make px4_sitl_default gazebo2.打开Mavros roslaunch mavros px4.launch fcu_url:"udp://:14540127.0.0.1:14557"3.运行功能包程序 rosrun offboard_node o…

业余快速学习虚幻引擎教程

仅用5小时学会虚幻引擎&#xff01; 你会学到什么 专为希望在业余时间打造虚幻引擎技能的艺术家和开发人员量身定制的专业技术 从几何图形到材料&#xff0c;从照明到互动&#xff0c;所有方面的提示 探索如何创造建筑水的效果 如何使用顶点绘制交互绘制多种材质 如何将特定地…

bpython ipython_安装ipython后命令找不到ipython bpython -bash: *python: command not found

原博文 2018-10-30 21:53 − ipython bpython -bash: *python: command not found 问题&#xff1a; 当pip安装ipython, bpython后, 直接执行ipython or bpython会报错&#xff1a;*python... 相关推荐 2019-12-09 17:35 − 运行xcall.sh jps时提示&#xff0c;报错“bash: jps…

js正则表达式/replace替换变量方法

转自&#xff1a;http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html 1. javascript 正则对象替换创建和用法&#xff1a;/pattern/flags 先简单案例学习认识下replace能干什么: 正则表达式构造函数&#xff1a; new RegExp("pattern"[,"flags&q…

第二版地面站加入"参数列表"

1. 连接界面 2. 电子地图 3. 参数列表后续新加入功能&#xff1a;待加入…

Blender中的主程序纹理学习课程 Master Procedural Texturing in Blender

挖掘Blender不可思议的强大节点编辑器的无限潜力。 你会学到: 逐步构建高级和高度可定制的程序纹理。 将许多不同层次的细节结合成一个复杂而现实的结果。 从头开始构建高级程序纹理背后的思维过程。 使用组节点为您的材料创建超级方便的定制。 课程获取&#xff1a;Blender中…

适合win7的python版本_windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2...

windows下多个python版本共存&#xff0c;如何在Windows7系统上安装最新的64位Python3.6.2 1、官网下载python3.6.2 https://www.python.org/ftp/python/3.6.2/python-3.6.2-amd64.exe 2、安装&#xff0c;选择自定义安装&#xff0c;直接安装到D盘目录下方便查找&#xff0c;把…

day18——sql优化——绑定变量

SQL> create table t(id int);SQL> set timing onSQL> variable x number; (声明x变量)SQL> exec :x :8SQL> insert into t values(:x);SQL> select * from t;SQL> commit;SQL> declare2 i number;3 sqlstr varchar(2000);4 …

2022-2028年全球与中国人字拖市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了全球与中国人字拖行业市场行业相关概述、全球与中国人字拖行业市场行业运行环境、分析了全球与…

【翻译】Ext JS 6 Beta发布

原文&#xff1a;Ext JS 6 Beta is Now Available 概述Ext JS 6的好处新的Ext JS功能和工具需要你的反馈意见概述 很高兴&#xff0c;Ext JS 6 beta版本现在发布了。该版本是为了让你、社区来测试和评估Ext JS 6工作进度的。这是协助创建最好的Ext JS发布版本的最好方式。 对于…

PX4编写msg文件

在msg文件夹下&#xff0c;创建一个msg文件&#xff0c;然后在&#xff23;MakkeLists.txt里面声明一下&#xff0c;然后在终端打开项目文件&#xff0c;&#xff26;irmware&#xff0c;输入指令&#xff1a;make px4_fmu-v5_default&#xff0c;编译即可在/home/xx/xxx/Firmw…

UE4风格化场景设计入门指南 Stylized Station – The Environment Artist’s Survival Kit

持续时间13h 1920X1080 .ts 包含项目文件 大小解压后&#xff1a;4.9G 语言&#xff1a;英语中文字幕&#xff08;人工校对&#xff09; 标题:风格化的车站——环境艺术家的生存工具包 信息: 环境艺术很难。 尤其是作为初学者&#xff0c;就像你自己一样。有大量的工作流程&am…

python如何调用文件_如何调用另一个python文件中的代码

原博文 2017-07-10 15:56 − 无论我们选择用何种语言进行程序设计时&#xff0c;都不可能只有一个文件&#xff08;除了“hello world”&#xff09;&#xff0c;通常情况下&#xff0c;我们都需要在一个文件中调用另外一个文件的函数呀数据等等&#xff0c;总之要操作其他文件…

C++中模块(Dll)对外暴露接口的方式

总结下C中模块(Dll)对外暴露接口的方式&#xff1a; (1)导出API函数的方式这种方式是Windows中调用DLL接口的最基本方式&#xff0c;GDI32.dll, User32.dll都是用这种方式对外暴露系统API的。这种方式的优点是导出函数没有语言限制&#xff0c;什么语言都能调用&#xff1b;缺点…

LVS详解及基于LVS实现web服务器负载均衡

前言LVS(Linux Virtual Server)Linux虚拟服务器&#xff0c;是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立&#xff0c;是中国国内最早出现的自由软件项目之一。通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能、高可用的服务器群集&#xff0c;从…

解决Ubuntu系统下git clone下载速度较慢的问题(亲测有效)

常见问题使用Git clone下载网速通常有十几kb&#xff0c;下载较慢&#xff0e; 使用以下指令即可解决&#xff1a; //这是我们要clone的&#xff0c;通常是github.com需要替换掉&#xff0c;就是在github.com后面加上.cnpmjs.org就可以了 git clone https://github.com/Hacker…

Revit结构2021专业人士的选择:从入门到专业

Revit结构2021专业人士的选择:从入门到专业 Revit Structure 2021 : 13th Floor Concrete Building 你会学到: Revit结构中的第13栋混凝土建筑 在Revit结构中启动新项目 创建级别的基本方法 创建关卡的技巧 在Revit结构2021中处理主要和次要问题 网格的绘制 直线和曲线网格 圆…

神奇的FireFox

今天开发的时候用FireFox,然后有个js总是不出效果,window.close,然后换个浏览器就完全没问题了,还有onkeydown->ruturn false 屏蔽按键,FireFox也不行........ 果然FireFox这么好用是有原因的... 推荐大家开发的时候还是用360极速,自用还是FireFox好一点.转载于:https://www…

python输出结果空格分割_python 输出列表元素实例(以空格/逗号为分隔符)

给定list,如何以空格/逗号等符号以分隔符输出呢&#xff1f; 一般的&#xff0c;简单的for循环可以打印出list的内容&#xff1a; l[1,2,3,4] for i in l: print(i) 输出结果一行一个元素&#xff1a; 1 2 3 4 若想得到以空格或逗号为分隔符的输出结果&#xff0c;代码可改为&a…

My deep learning reading list

My deep learning reading list 主要是顺着Bengio的PAMI review的文章找出来的。包括几本综述文章&#xff0c;将近100篇论文&#xff0c;各位山头们的Presentation。全部都可以在google上找到。BTW&#xff1a;由于我对视觉尤其是检测识别比较感兴趣&#xff0c;所以关于DL的应…

QT串口调试软件

QT串口调试软件软件主界面设置界面关于我们使用介绍软件主界面 本界面主要包括串口设置部分、数据接收部分、数据发送部分以及软件配置部分构成&#xff0c;软件主界面如图1所示。 在图1软件主界面中&#xff0c;位于左侧部分数据数据连接部分&#xff0c;主要功能是与无人机…

Unity提高工作效率的终极指南

本套课程指南通过关于如何更快、更智能地工作的最新技术&#xff0c;帮助Unity创作者节省时间并提高工作效率 你会学到: Unity的创建者节省了时间&#xff0c;提高了生产力。 关于如何更快地使用程序员和艺术家工具集的技巧&#xff0c;无论是个人还是团队。 Unity应该是一种快…

deepin tim(wine)无法安装_利用HyperV虚拟机,如何在Win10上安装Deepin国产操作系统?深度好文!...

随着老美对华为手机业务的封锁&#xff0c;在PC端的操作系统的未来也逐渐引起了人们的重视&#xff0c;一旦Windows停止向国内供应的话&#xff0c;对国内市场的冲击也是不小的。基于这个原因&#xff0c;国产操作系统也越来越频繁地进入大家的视野。在众多国产操作系统中&…

**使用 Git Hook 实现网站的自动部署

http://www.tuicool.com/articles/3QRB7jU 自动化能解放人类的双手&#xff0c;而且更重要的是&#xff0c;因为按照规定的流程来走&#xff0c;也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的&#xff0c;FTP 覆盖旧文件、服务器定时任务去 bui…

Mavlink自定义协议

参照本人博客&#xff1a;博客直达 浏览密码&#xff1a;N414 这里不做描述&#xff0c;详细过程请移步本人博客

UE建筑可视化全局照明学习 Unreal Engine: Global Illumination for Arch. Visualization

虚幻引擎:建筑可视化的全局照明 你会学到: 使用轻量级地理信息引擎 聚焦胃肠计算 生成灯光贴图Uv 轻度烘焙 控制光反弹 使用环境遮挡 动画和地理信息 暴露 保存高分辨率图像 课程获取&#xff1a;UE建筑可视化全局照明学习-云桥网 时长:1h 30m |视频:. MP4&#xff0c;12807…

dbf如何导入oracle_「赵强老师」第一个Oracle的手工管理的备份和恢复

一、什么是手工管理的备份与恢复&#xff1f;尽管在Oracle中&#xff0c;已经有了RMAN的备份与恢复。但是作为Oracle备份恢复的一种方式&#xff0c;我们将在本文中通过一个例子来为大家介绍如何使用手工的方式来完成Oracle的备份与恢复。手工方式的本质是通过操作系统的cp命令…

大小端存储模式的理解和判断

在计算机系统中&#xff0c;存储是以字节为单位的&#xff0c;每个地址单元都对应着一个字节&#xff0c;一个字节8bit。在C语言中除了8bit的char之外&#xff0c;还有16bit的short型&#xff0c;32bit的long型&#xff08;要看具体的编译器&#xff09;。对于位数大于8位的处理…

汇编语言学习随笔

1.可执行文件中包含两部分内容&#xff1a; *程序&#xff08;从源程序中的汇编指令翻译过来的机器码&#xff09;和数据&#xff08;源程序中定义的数据&#xff09; *相关的描述信息&#xff08;比如程序有多大&#xff0c;占多少内存空间啊等等&#xff09; 2.segment和ends…

新装Ubuntu18.04系统配置PX4环境

1.安装QGC地面站系统&#xff1a;链接&#xff1a;https://docs.qgroundcontrol.com/master/en/getting_started/download_and_install.html 2.配置系统文件&#xff1a;下载PX4代码 -->打开代码 -->找到文件夹Tools文件 -->找到setup文件夹 -->找到ubuntu.sh文件&…