WebApi接口使用HttpGet方式实现接受实体类参数(原创)
WebApi接口使用HttpGet方式实现接受实体类参数(原创)
WebApi控制器接口使用HttpGet方法接受实体类参数 C# Code: /// <summary> /// WebApi控制器接口使用HttpGet方法接受实体类参数 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpGet] [Route("get-by-model")] public ModelResponse TestGetByModel( [FromUri(BinderType = typeof(ModelBinderFromUri<ModelRequest>))] ModelRequest request) { string data = request.Data; string s = request.ActionID.ToString(); return new ModelResponse { Code = 0, Message = "操作完成.", Data = "返回请求的数据:"+ data }; } //来源:C/S框架网(www.csframework.com) QQ:1980854898 C# Code: /// <summary> /// 自定义ModelBinder处理程序 /// </summary> /// <typeparam name="T"></typeparam> public class ModelBinderFromUri<T> : System.Web.Http.ModelBinding.IModelBinder { public bool BindModel(HttpActionContext actionContext, System.Web.Http.ModelBinding.ModelBindingContext bindingContext) { string JSON = ""; //使用GET方法是通过URL传递请求的数据(?参数) if (actionContext.Request.Method.Method == "GET") { string uri = System.Web.HttpUtility.UrlDecode(actionContext.Request.RequestUri.Query.ToString()); if (!uri.IsNullOrEmpty() && uri.Length > 1) { if (uri.Substring(0, 1) == "?") //?{JSON字符串} JSON = uri.Substring(1, uri.Length - 1);//去掉查询参数的?号 else JSON = uri; } } //使用POST方法是通过数据流传递数据 if (actionContext.Request.Method.Method == "POST") { using (StreamReader sr = new StreamReader(actionContext.Request.Content.ReadAsStreamAsync().Result)) { JSON = sr.ReadToEnd(); } } try { //尝试将JSON转换为对象 T model = JsonConvert.DeserializeObject<T>(JSON); //返回对象 bindingContext.Model = model; } catch (JsonReaderException)//JSON格式错误,抛出异常 { throw new ResponseException(ErrorCodes.JsonFormatInvalide, ErrorCodes.JsonFormatInvalide_Msg); } return bindingContext.Model != null; } } //来源:C/S框架网(www.csframework.com) QQ:1980854898 测试案例: C# Code: string url = "http://localhost:8899/api/testapi/get-by-model"; ModelRequest M = new ModelRequest(); M.ActionID = 100000; M.ApiKey = "5cd31880a3f548ee9a8f37768bd6ebc8"; M.Data = "使用HttpGet方法接受实体类参数演示"; M.Sign = "s34df15cd31880a3f548ee9a8f37768bd6ebc8"; string JSON = JsonConvert.SerializeObject(M); string result = WebApiTools.Get(url, JSON); txtResponse.Text = result; //来源:C/S框架网(www.csframework.com) QQ:1980854898 扫一扫加作者微信
参考文档:
[原创]C#植入友商网在线服务并实现同步用户注册接口(三) C#.NET WEBAPI 接口设计-调用多个参数的接口 WebApi使用URL拼接参数形式传人后台自动解析为实体对象 C# WebAPI控制器邮箱验证接口返回自动重定向HTML页面(原创) 客户端使用HTTPGET请求调用WebApi指定FromUri参数对象模型的接口 IDatabase接口使用事务DbTransaction实例 原创文章:WebApi接口开发实例,搭建和部署WebApi接口 Winform调用WebApi接口实现增删改查CRUD实例源码 CSFramework.WebApi时钟定时作业异步处理程序(IThreadHandler接口)实现 【原创】C# 深度拷贝对象 使用.NET反射+递归原理实现深度克隆 CSFramework.WebApi后端服务器框架:客户端调用WebApi接口方式(签名+Token令牌) 基于Web前端用户调用CSFramework.WebApi服务端登录登出接口实现 C#实现接口的两种方式:显示实现和隐式实现接口 WebApi开发框架:使用HttpGet方式调用WebAPI接口 Web端使用VUE调用WebApi接口实现用户登录及采用Token方式数据交互
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |