您现在的位置是:首页» windows系统» web api和数据抓取,webapi编程入门教程

web api和数据抓取,webapi编程入门教程

2024-07-15 18:24:37
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。webapi 返回类型到底应该是什么才合适,这是个问题我们知道在WebAPi中对于响应结果我们都是这样用的: public

本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。

webapi 返回类型到底应该是什么才合适,这是个问题

我们知道在WebAPi中对于响应结果我们都是这样用的: public HttpResponseMessage GetResult(T t){return Request.CreateResponse(HttpStatusCode.OK, t);}在项目中前端为了和其他统一,封装了一套响应的结果和状态码,要求直接返回对象,于是将上述修改成比如如下:public Result> GetResult(){var result = new Result>();return result;}public class Result : BaseResult{public T Data;}public class BaseResult{public string Message;public int Status;public ErrorCode ErrorCode;}public enum ErrorCode{......}统观以上两种方法,一种是WebAPi内置响应的结果,另外一种则是直接返回自定义响应结果。于是乎,我开始思索这两种方法虽然都能得到我们想要的结果,但是有什么区别没有呢?说的更加明确一点的是,二者在数据响应上有没有性能上的差异呢?WebAPi响应结果和自定义响应结果二者性能差异以上则是需要返回对象来进行处理,而有些我们则不需要返回任何对象来进行处理例如直接返回void,而在WebAPi中对应需要返回 IHttpActionResult 例如自定义返回则是如下:public void GetFirst(){.....}在WebAPi中则是进行如下返回:public IHttpActionResult GetSecond(){return OK();}下面我们在控制台中分别来测试这二者在WebHost以及在SelfHost上的差异,我们如何获取其差异呢?我们通过对void方法和http方法在控制台中发出1000个请求来获取其总共花费时间来进行比较。SelfHost[HttpGet]public void GetFirst(){StringBuilder stringbuilder = new StringBuilder();for (int i = 0; i < 20; i++){stringbuilder.Append("something");}}[HttpGet]public IHttpActionResult GetSecond(){StringBuilder stringbuilder = new StringBuilder();for (int i = 0; i < 20; i++){stringbuilder.Append("something");}return Ok();}在控制台中方法如下:private const string voidUrl = "http://localhost:8080/api/home/GetFirst";private const string httpUrl = "http://localhost:8080/api/home/GetSecond";private static List voidTimes = new List();private static List httpTimes = new List();static void Main(string[] args){Console.WriteLine("Start Test....");for (int i = 0; i < 1000; i++){voidTimes.Add(getResponse(voidUrl));Thread.Sleep(10);Console.WriteLine("void Test " + i);}Console.WriteLine("Finished Void Test");for (int i = 0; i t.Milliseconds);Console.WriteLine("void方法发出1000个请求总共需要时间:" + voidTotalTime);Console.WriteLine("void方法平均每一个请求需要时间:" + voidTotalTime / 1000.00 + "秒");var httpTotalTime = httpTimes.Sum(t => t.Milliseconds);Console.WriteLine("http方法发出1000个请求总共需要时间: " + httpTotalTime);Console.WriteLine("http方法平均每一个请求需要时间: " + httpTotalTime / 1000.00 + "秒");Console.Read();}static TimeSpan getResponse(string url){var stopWatch = new Stopwatch();stopWatch.Start();var httpClient = new HttpClient();httpClient.BaseAddress = new Uri(url);var task = httpClient.GetAsync(httpClient.BaseAddress).Result;var result = task.Content.ReadAsAsync(typeof(object));var timeSpan = stopWatch.Elapsed;stopWatch.Stop();return timeSpan; }

XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com