zoukankan      html  css  js  c++  java
  • Asp.net Web API实战

          工作中需要暴露一些功能,或者说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/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(string value)
            {
            }
    
            // PUT api/values/5
            public void Put(int id, string value)
            {
            }
    
            // DELETE api/values/5
            public 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. 实战结束。:)

  • 相关阅读:
    redis基本操作 —— hash
    redis基本操作 —— string
    redis —— linux下源码安装
    zookeeper c api 安装 & 连接 zookeeper
    wpa_supplicant移植(2.9版本)
    hostapd移植(2.6版本为例)
    hostapd移植(2.7版本)
    使用MKdocs搭建个人主页并关联到GithubPages上
    yolov5的yaml文件解析
    RANSAC——(RANdom SAmple Consensus(随机抽样一致))
  • 原文地址:https://www.cnblogs.com/slmk/p/2630691.html
Copyright © 2011-2022 走看看