zoukankan      html  css  js  c++  java
  • Asp.Net MVC part6 WebAPI

    两种web服务
    SOAP风格:基于方法,产品是WebService
    REST风格:基于资源,产品是WebAPI
    可以返回json、xml类型的数据
    对于数据的增、删、改、查,提供相对的资源操作,按照请求的类型进行相应处理,主要包括Get(查)、Post(增)、Put(改)、Delete(删),这些都是http协议支持的请求方式
    请求方式:根据路由规则请求

    在APIController中定义crud的方法,名称可以自定义,如果对应相应的资源操作,可以使用特性约束
    主要的特性包括
    HttpGet
    HttpPost
    HttpPut
    HttpDelete

    使用方式1:jquery的ajax
    指定请求的数据类型: contentType: "application/json; charset=utf-8",//数据类型
    主要的属性:
    type:请求方式,包括Get、Post、Put、Delete
    url:请求资源,根据路由规则编写
    data:请求数据,为json格式
    contentType:请求数据的类型及编码
    dataType:返回的数据类型,可以是text、json
    success:成功处理的回调函数
    备注中为修改请求的示例
    注意:使用js的异步操作,不可以跨域访问

    var data = '{"UserId":"' + $('#userId').val() +'","UserName":"' + $('#userName').val() + '"}';
    
    
                    $.ajax({
                        type: 'PUT',//请求类型。get,post,put,delete
                        url: 'api/UserInfo/' + $('#userId').val(),//请求地址
                        data: data,//参数
                        contentType: "application/json; charset=utf-8",//数据类型
                        dataType: 'text',//返回数据类型
                        success: function (msg) {
                            if (eval(msg) == '1') {
                                InitData();
                            }
                        }
                    }); 

    使用方式2:HttpClient对象  Crud操作的API

    创建并初始化对象:
        client.BaseAddress = new Uri(url);
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    
    读集合:
        HttpResponseMessage response = client.GetAsync(url).Result;
         var userList = response.Content.ReadAsAsync<IEnumerable<数据类型>>().Result;
    
    根据编号读对象
        HttpResponseMessage response1 = client.GetAsync(url).Result;
        var userInfo = response1.Content.ReadAsAsync<数据类型>().Result;
    
    增加:
        HttpResponseMessage response = client.PostAsJsonAsync("api/userinfo", userInfo).Result;
        使用response.IsSuccessStatusCode判断是否成功
        使用response.Content.ToString()获取返回值
    
    修改:
         HttpResponseMessage response = client.PutAsJsonAsync("api/userinfo/"+userInfo.UserId, userInfo).Result;
        使用response.IsSuccessStatusCode判断是否成功
        使用response.Content.ToString()获取返回值
    
    删除:
        HttpResponseMessage response = client.DeleteAsync("api/userinfo/" + uid).Result;
        使用response.IsSuccessStatusCode判断是否成功
        使用response.Content.ToString()获取返回值

    原理(管道执行过程)

    获取ControllerFactory,根据上下文反射Controller对象
    在MvcHandler的PR方法中
    调用controller.Execute方法
    在MvcHandler的PR方法中
    调用ActionInvoker.InvokeAction方法
    当前Controller类-》ControllerBase类的Execute方法-》Controller类的ExecuteCore方法
    调用InvokeActionResultWithFilter
    ActionInvoker对象为ControllerActionInvoker类的实例
    调用actionResult.ExecuteResult
    调用View.Render方法,将页面渲染到输出流中
    ViewResult类-》ViewResultBase类
  • 相关阅读:
    Android Studio 打包生成apk
    找水王
    关于搜狗输入法的用户体验评价
    c语言函数的嵌套使用和矩阵运算
    人月神话阅读笔记02
    第一阶段冲刺意见评论汇总
    高校表白App-团队冲刺第十天
    高校表白App-团队冲刺第九天
    高校表白App-团队冲刺第八天
    人月神话阅读笔记01
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/6115581.html
Copyright © 2011-2022 走看看