工作中需要暴露一些功能,或者说API供其他系统调用,其他系统可能是Winform,WPF,Asp.net或者是Mobile客户端。当然可以用Web Service或是WCF来实现,但是自己偏向于尝试新的东西,于是,就打算用Asp.net Web API来实现,也来体验一把RESTFull框架。初次使用,把大体过程记录下来,美名曰“实战”,实际算是入门指导吧。

Asp.net Web API是通过Http协议将API暴露给客户端,很多东西与ASp.net MVC很相似,其实她本身就包含在Asp.net Mvc 4里面的。下面开始实战:

  1. 安装Asp.net Mvc 4,从这里安装:http://www.asp.net/mvc/mvc4。安装时间大概半小时的样子。支持VS 2010学习版。

  2. 新建项目,选择“Asp.net MVC 4 Web Application”项目类型,然后选择Web API:

  3. 重点看一下Controller下面的ValuesController类,这个类暴露了以下API:

public class ValuesController : ApiController{// GET api/valuespublic IEnumerable<string> Get(){return new string[] { "value1", "value2" };}// GET api/values/5public string Get(int id){return "value";}// POST api/valuespublic void Post(string value){}// PUT api/values/5public void Put(int id, string value){}// DELETE api/values/5public void Delete(int id){}}

熟悉http协议的话,上面的很好懂了。F5运行,我用Chrome浏览器测试:

这里返回的是xml格式的,这是因为Chrome自动添加了"Accept:Application/Xml"请求头(各位如何让Chrome返回Json呢?)。默认返回Json格式。

至于URL是如何路由的,熟悉MVC的应该很清楚了。看看App_Start/RouteConfig.cs,当然我们可以在这里配置自己的路由。

  4. 客户端如何调用服务器端的API:

通常我们使用HttpClient类,可以看看dudu老大写的HttpClient + ASP.NET Web API, WCF之外的另一个选择

我这里演示如何使用简单的WebClient来调用,使用WebClient的原因是:不像HttpClient,它不需要.net framework4.0。

WebClient wc = new WebClient();
wc.Headers.Add("Accept:Application/Json"); //这一行不要,结果是一样的
string json = wc.DownloadString("http://localhost:4391/api/values");
var ss= JavaScriptConvert.DeserializeObject<string[]>(json);

这里Json解析使用的是第三方Newtonsoft.Json,我用的是很老的版本了。这里下载最新版本。

这个第三方库比微软自带的都要好用,而且很强大的,同时支持.net和Sivlerlight,据说速度是最快的。

Web Api是根据客户端的Accept请求头,自动返回相应格式的数据,默认是JSON格式。

  这里我们只演示了Get,如果用WebClient做Post的话,我简单试了一下没成功,post方法的value总是null。Google发现更好的解决方法是使用RestSharp,他同时支持.net/mono/silverlight/windowsphone。有时间研究下。

  5. 实战结束。:)

Asp.net Web API实战相关推荐

  1. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程

    最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tuto ...

  2. 【Web API系列教程】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(上)

    前言 在传统的web应用程序中,客户端(浏览器)通过请求页面来启动与服务器的通信.然后服务器处理该请求,并发送HTML页面到客户端.在随后页面上的操作中--例如,用户导航到一个链接或提交一个包含数据的 ...

  3. 监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标

    回顾 在<监控系统简介:使用 Prometheus 与 Grafana>一文中,我们了解了什么是监控系统,Prometheus 这一监控工具及它提供的数据类型.PromQL 以及 Graf ...

  4. ASP.NET Web Api 教程

    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[七]--实现资源的分页 摘要: 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.h ...

  5. (四)Asp.net web api中的坑-【api的返回值】

    (四)Asp.net web api中的坑-[api的返回值] 原文:(四)Asp.net web api中的坑-[api的返回值] void无返回值 IHttpActionResult HttpRe ...

  6. WCF 和 ASP.NET Web API

    地址:https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/wcf-and-aspnet-web-api WCF 是 Microsoft 为生成面 ...

  7. ASP.NET Web API自身对CORS的支持:从实例开始

    在<通过扩展让ASP.NET Web API支持W3C的CORS规范>中我们通过自定义的HttpMessageHandler为ASP.NET Web API赋予了跨域资源共享的能力,具体来 ...

  8. ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API

    本篇尝试在现有的ASP.NET MVC 4 项目上增加使用ASP.NET Web API. 新建项目,选择"ASP.NET MVC 4 Web应用程序". 选择"基本&q ...

  9. [转]Web API Introduction to OData Services using ASP.NET Web API

    本文转自:http://mahedee.net/tag/web-api/ What is OData? OData Stands for Open Data Protocol. It is a dat ...

最新文章

  1. android fastjson漏洞_亲手带你 Debug Fastjson 的安全漏洞
  2. 一步一步SharePoint 2007之三十七:在SharePoint中实现Workflow(3)——运行Workflow
  3. 2008年12月31日,博客园开博
  4. Nginx 安装配置
  5. 僵尸进程与孤儿进程(精简易懂,直接要害)
  6. 中国移动苏州研发中心前端笔试(1)
  7. 虚拟机桥接模式下配置静态IP
  8. openlayer+虚线、实线
  9. 一、Ubuntu安装HomebridgeUI
  10. 【转】安全测试三部曲
  11. 一亩三分地新手上路答案
  12. 铅酸电池充电C语言程序,铅酸蓄电池化成充电方法与流程
  13. 怎么做视频拼接?借助这款软件事半功倍
  14. 嗅探路由器PPPOE拨号密码
  15. 2022年警察招考公安专业科目考试模拟试题卷及答案
  16. 最后一刻完成了 UI 的需求--验证码动画
  17. html隐藏浏览器菜单栏,移动设备(手机)上浏览器全屏隐藏工具栏和菜单栏的设置...
  18. 博弈论系列—智猪博弈
  19. UWP应用的标题修改
  20. 物联网实验:Arduino实现光控灯,实现自动补光。

热门文章

  1. Windows Server 2016虚拟机克隆后修改安全标识SID
  2. 浅谈Iframe和FRAME的区别
  3. python判断字符串
  4. Mac OS使用技巧十九:Safari碉堡功能之二查看网页源代码
  5. linux中fork, source和exec的区别
  6. (原创)用讯飞语音实现人机交互的功能
  7. JQuery获取与设置HTML元素的内容或文本的实现代码
  8. Windows8 Metro开发 (03) : AppBar控件之BottomAppBar
  9. Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
  10. Java泛型的实现原理