当前位置: 首页 > news >正文

外贸英语学习网站wordpress 文章编辑器

外贸英语学习网站,wordpress 文章编辑器,一般网站建设公司有哪些,做美食下载什么网站客户端使用RestSharp库调用WebApi 动态加载数据 在MyDoTo客户端中#xff0c;使用NuGet 安装两个库 RestSharp Newtonsoft.Json 一. RestSharp 简单的使用测试例子 当前章节主要目的是#xff1a;对RestSharp 库#xff0c;根据项目需求再次进行封装。下面先做个简单的使用…客户端使用RestSharp库调用WebApi 动态加载数据 在MyDoTo客户端中使用NuGet 安装两个库 RestSharp Newtonsoft.Json  一. RestSharp 简单的使用测试例子 当前章节主要目的是对RestSharp 库根据项目需求再次进行封装。下面先做个简单的使用测试例子。 1.首先运行WebApi 项目获取Memo 单条数据 请求成功后可以看到请求的URL和返回的Response body响应内容 2.在MyToDo客户端的 MemoViewModel中 CreateMemoList 方法加载数据时进行以下修改测试 var client new RestSharp.RestClient(http://localhost:5143); var requestGet new RestRequest(api/Memo/Get,Method.Get); requestGet.AddParameter(id,2); var response client.Execute(requestGet); var con response.Content; 如果需要解析拿到的具体对象数据需对结果进行 JsonConvert.DeserializeObject 反序列化。具体的解析步骤就是 拿到对象数据把JSON 生成C# 实体类。进行反序列化的时候把当前数据实体类传进去就OK了。 3.先把WebApi项目已经启动后再选择 MyToDo 客户端项目右键启动一个新实例 或者右键解决方案》属性配置多个启动项目 4.最后在MyToDo客户端打断点调试。运行起来后命中断点可以看到请求的接口有数据返回了 基本的简单使用就是这样。在RestSharp 官网 有各种使用实例复杂的涉到Token 身份认证等都有。 二.对 RestSharp 进行封装使用集成到客户端中 新建一个服务层文件夹Service用于存放封装对WebApi 接口的访问等处理逻辑 1. 首先把 ApiResponse 共用类移到MyToDo.Shared 中并且再添加请求结果泛型的ApiResponse 类 public class ApiResponse{/// summary/// 失败/// /summary/// param namemessage/param/// param namestatus/parampublic ApiResponse(string message, bool status false){ this.Message message;this.Status status;}/// summary/// 成功/// /summary/// param namestatus/param/// param nameresult/parampublic ApiResponse(bool status,object result) {this.Status status;this.Result result;}/// summary/// 返回消息/// /summarypublic string Message { get; set; }/// summary/// 返回状态/// /summarypublic bool Status { get; set; }/// summary/// 结果/// /summarypublic object Result { get; set; }}public class ApiResponseT{/// summary/// 返回消息/// /summarypublic string Message { get; set; }/// summary/// 返回状态/// /summarypublic bool Status { get; set; }/// summary/// 结果/// /summarypublic T Result { get; set; }} 且MyToDo 客户端要引用MyToDo.Shared 项目。 2. 在 MyToDo 项目Service 文件夹中封装一个通用的请求类型类BaseRequest主要用于构造请求接口的时候传递的参数。 public class BaseRequest{/// summary/// 请求类型/// /summarypublic Method Method { get; set; }/// summary/// 路由也就是Url/// /summarypublic string Route { get; set; }/// summary/// 数据类型描述/// /summarypublic string ContentType { get; set; } application/json;/// summary/// 请求参数/// /summarypublic object Paramenter { get; set; }} 3.同样接着再封装一个访问WebApi 的共用类HttpRestClient public class HttpRestClient {private readonly string apiUrl;protected readonly RestClient clinet;public HttpRestClient(string apiUrl) {this.apiUrl apiUrl;clinet new RestClient(apiUrl);}//通用请求public async TaskApiResponse ExecuteAsync(BaseRequest baseRequest){var request new RestRequest(baseRequest.Route, baseRequest.Method);//添加请求头request.AddHeader(Content-Type, baseRequest.ContentType);//添加请求参数if (baseRequest.Paramenter ! null){//把请求参数进行序列化后添加进来。并且设置序列化的类型request.AddParameter(param,JsonConvert.SerializeObject(baseRequest.Paramenter),ParameterType.RequestBody);}var responseawait clinet.ExecuteAsync(request);//把结果进行反序列化后返回出去return JsonConvert.DeserializeObjectApiResponse(response.Content);}//通用带泛型请求public async TaskApiResponseT ExecuteAsyncT(BaseRequest baseRequest){var request new RestRequest(baseRequest.Route, baseRequest.Method);//添加请求头request.AddHeader(Content-Type, baseRequest.ContentType);//添加请求参数if (baseRequest.Paramenter ! null){//把请求参数进行序列化后添加进来。并且设置序列化的类型request.AddParameter(param, JsonConvert.SerializeObject(baseRequest.Paramenter), ParameterType.RequestBody);}var response await clinet.ExecuteAsync(request);//把结果进行反序列化后返回出去return JsonConvert.DeserializeObjectApiResponseT(response.Content);} } 4.创建通用的请求服务类IBaseService public interface IBaseServiceTEntity where TEntity : class{//添加TaskApiResponseTEntity AddAsync(TEntity entity);//更新TaskApiResponseTEntity UpdateAsync(TEntity entity);//删除TaskApiResponse DeleteAsync(int id);//根据id取第一条数据TaskApiResponseTEntity GetFirstOfDefaultAsync(int id);//获取所有数据TaskApiResponsePagedListTEntity GetAllAsync(QueryParameter parameter);} 5. 实现BaseService通用服务类。继承 IBaseService public class BaseServiceTEntity : IBaseServiceTEntity where TEntity : class{private readonly HttpRestClient client;private readonly string serverName;public BaseService(HttpRestClient client,string serverName){this.client client;this.serverName serverName;}public async TaskApiResponseTEntity AddAsync(TEntity entity){var request new BaseRequest() {Method Method.Post,Route$api/{serverName}/Add,Paramenterentity};return await client.ExecuteAsyncTEntity(request);}public async TaskApiResponse DeleteAsync(int id){var request new BaseRequest(){Method Method.Delete,Route $api/{serverName}/Delete?id{id}};return await client.ExecuteAsync(request);}public async TaskApiResponsePagedListTEntity GetAllAsync(QueryParameter parameter){var request new BaseRequest(){Method Method.Get,Route $api/{serverName}/GetAll?pageIndex{parameter.PageIndex}pageSize{parameter.PageSize}Search{parameter.Search}};return await client.ExecuteAsyncPagedListTEntity (request);}public async TaskApiResponseTEntity GetFirstOfDefaultAsync(int id){var request new BaseRequest(){Method Method.Delete,Route $api/{serverName}/Get?id{id}};return await client.ExecuteAsyncTEntity(request);}public async TaskApiResponseTEntity UpdateAsync(TEntity entity){var request new BaseRequest(){Method Method.Post,Route $api/{serverName}/Update,Paramenter entity};return await client.ExecuteAsyncTEntity(request);}} 三.待办事项调用WebApi服务接口获取数据 1.首先创建待办事项服务接口类 IToDoService 继承IBaseService 基类 public interface IToDoService:IBaseServiceToDoDto{} 2.接着要实现待办事项服务接口类ToDoService。继承BaseService和IToDoService  public class ToDoService : BaseServiceToDoDto, IToDoService{/// summary/// 构造中直接传控制器名称进去。因为在Web Api项目中待办事项控制器的名称就是叫ToDo/// /summary/// param nameclient/param/// param nameserverName/parampublic ToDoService(HttpRestClient client, string serverName ToDo) : base(client, serverName){}} 3.然后还需要在 App.xaml.cs 中进行依赖注入 /// summary/// Interaction logic for App.xaml/// /summarypublic partial class App : PrismApplication{/// summary/// 创建启动页面/// /summary/// returns/returnsprotected override Window CreateShell(){return Container.ResolveMainView();}/// summary/// 依懒注入的方法/// /summary/// param namecontainerRegistry/paramprotected override void RegisterTypes(IContainerRegistry containerRegistry){//对封装的http请求类进行注入。并且设置一个默认参数containerRegistry.GetContainer().RegisterHttpRestClient(made:Parameters.Of.Typestring(serviceKey:webUrl));//注册默认的服务地址containerRegistry.GetContainer().RegisterInstance(http://localhost:5143/,serviceKey: webUrl);//注册服务containerRegistry.RegisterIToDoService, ToDoService();containerRegistry.RegisterForNavigationAboutView();containerRegistry.RegisterForNavigationSkinView, SkinViewModel();containerRegistry.RegisterForNavigationIndexView, IndexViewModel();containerRegistry.RegisterForNavigationMemoView, MemoViewModel();containerRegistry.RegisterForNavigationToDoView, ToDoViewModel();containerRegistry.RegisterForNavigationSettingsView, SettingsViewModel();}} 4.最后在ViewModels 中去使用 待办事项接口服务IToDoService  public class ToDoViewModel:BindableBase{public ToDoViewModel(IToDoService toDoService){ToDoDtos new ObservableCollectionToDoDto();AddCommand new DelegateCommand(Add);this.toDoService toDoService;CreateTodoList();}private bool isRightDrawerOpen;/// summary/// 右侧编辑窗口是否展开/// /summarypublic bool IsRightDrawerOpen{get { return isRightDrawerOpen; }set { isRightDrawerOpen value; RaisePropertyChanged(); }}public DelegateCommand AddCommand{ get; private set; }private ObservableCollectionToDoDto toDoDtos;private readonly IToDoService toDoService;/// summary/// 创建数据的动态集合/// /summarypublic ObservableCollectionToDoDto ToDoDtos{get { return toDoDtos; }set { toDoDtos value;RaisePropertyChanged(); }}async void CreateTodoList(){//添加查询条件var todoResultawait toDoService.GetAllAsync(new Shared.Parameters.QueryParameter(){PageIndex 0,PageSize 100,});if (todoResult.Status){toDoDtos.Clear();foreach (var item in todoResult.Result.Items){toDoDtos.Add(item);}}//for (int i 0; i 20; i)//{// toDoDtos.Add(new ToDoDto()// {// Title标题i,// Content测试数据...// });//}}/// summary/// 添加待办/// /summary/// exception crefNotImplementedException/exceptionprivate void Add(){IsRightDrawerOpentrue;}} 四.代码结构
http://www.w-s-a.com/news/938433/

相关文章:

  • 网站设计和备案企业官网网站建设免费
  • 公司概况-环保公司网站模板搜索引擎营销的基本流程
  • 门户网站建设经验天津市建设银行租房网站
  • 百度推广 帮做网站吗怎样修改网站的主页内容
  • 网站怎么做dns解析公司官网改版方案
  • 湛江市住房和城乡建设局网站杭州网站公司哪家服务好
  • 设计网站公司湖南岚鸿设计镜像的网站怎么做排名
  • 你注册过哪些网站微信app下载安装官方版2019
  • 杭州滨江的网站建设公司人才招聘网网站策划方案
  • 门户网站是指提供什么的网站网站优化需要工具
  • 和小男生做的网站代理公司注册步骤
  • 天猫网站建设的目标是什么seo有些什么关键词
  • 网站前端建设都需要什么莱芜信息港网页
  • 如何做360网站优化网站建设培训教程新手入门到精通
  • 做网站有的浏览器怎么做网站网站赚钱
  • 织梦 做网站 教程百度登录个人中心官网
  • ftp怎么修改网站wordpress分享积分
  • 营销策划方案的步骤西安关键词优化软件
  • 南宁自己的网站移动互联网技术学什么
  • 2017湖北建设教育协会网站自己接单做网站
  • 定制网站建设制作h5网站要多久
  • 泰安中呼网站建设有限公司 概况个人网站的设计与实现参考文献
  • 圣诞节网站怎么做怎么获取网站的图片
  • 想找个人做网站音乐网站建设教程视频教程
  • 网站收录一键提交阿里巴巴做网站多少钱
  • 怎么做网站投放广告商务网站建设实训报告
  • 服装代销的网站源码国内电子商务网站有哪些
  • qq空间怎么做网站做企业平台的网站有哪些
  • 网站的优缺点wordpress手机适配模板中文
  • 福州网站建设H5广告公司简介简短