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

外链是不是把自己的网站信息发布到别人的网站上?wordpress 无法登入

外链是不是把自己的网站信息发布到别人的网站上?,wordpress 无法登入,旅游网站开发需求,网站建设费能算作广告费用吗在我前一篇博客《WebAPI前置知识:HTTP与RestfulAPI》中已经给各位简单介绍了HTTP协议与RestFul API的关系#xff0c;以及一些基本的HTTP协议知识#xff0c;在这些知识的铺垫下#xff0c;今天#xff0c;我们一起来讨论一下WEB API的适用场景#xff0c;然后写我们第一个… 在我前一篇博客《WebAPI前置知识:HTTP与RestfulAPI》中已经给各位简单介绍了HTTP协议与RestFul API的关系以及一些基本的HTTP协议知识在这些知识的铺垫下今天我们一起来讨论一下WEB API的适用场景然后写我们第一个WEB API接口并演示如何对其进行简单调用。     很多人都很迷惑既然有了WCF为什么还要有WEB APIWEB API会不会取代WCF     就我的看法WCF提供的是一种RPC实现的集合WCF的设计更多地考虑了SOA的场景以及各种RPC的问题。很多人也会说RestFul API也是一种RPC啊并且WCF中也有关于RestFul 的实现啊。很多资料中RPC和RestFul在风格概念上是有一些区别的其实我觉得这两者的区别比较主观过度纠结这些就学院派了我主要关注了实际使用上的一些问题在WCF中支持的协议很多WS-*系列协议以及一些更简洁的协议其中提供了一些专用通信协议的性能是非常高的并且WCF还提供了服务发现等功能我认为WCF更适合内部系统间的高性能调用社区中也有其他一些RPC方案可以选择例如gRPCAvorthrift都是和WCF定位相同的产品而WEB API是关注于HTTP RestFul风格的产品在此基础上任何语言、任何终端都能非常容易地进行对接并且能利用非常成熟的各种HTTP基础设施和解决方案来进行开发、调试、负载均衡、内容分发。所以WEB API是一种针对HTTP的偏重于快速开发RestFul风格开放式API的开发框架。目前看来他并不能取代WCF他们各有适合的场景不能认为WEB API是WCF的替代产品。        OK现在我们来开发第一组WEB API接口使用VS2012以后的版本都有现成的WEB API创建模板大家跟着创建就好了创建出来后项目中会有MVC、WEB API的项目WEB API对MVC有依赖不能单独创建而WEB API和MVC都是利用类似的路由机制所以在默认路由中WEB API 使用 /api/{controller}/{id}         作为路由添加了/api/节以区分MVC和web api。        接下来我们添加一个WEB API的Controller取名为PersonController他继承于ApiController在创建这个Controller的时候我们就定义了一种资源Person在PersonController里的所有操作均围绕着Person这个资源来的。接下来我们开始定义一组增删改查操作。        在Web API中默认路由采用了一种约定根据谓词来进行路由而方法名的前缀就是调用该方法对应使用的HTTP谓词。代码示例如下 /// summary/// Person 为资源对Person进行的一组操作/// /summarypublic class PersonController : ApiController    {                 private static ListPerson _personLst new ListPerson();              /// summary/// 获取一个Person        /// /summary/// param nameidPerson的ID/param/// returnsPerson/returnspublic Person GetPerson(long id)        {             return _personLst.Find(x x.Id id);        }        /// summary/// 添加一个Person        /// /summary/// param namepersonPerson/parampublic void PostAddPerson(Person person)        {            _personLst.Add(person);        }        /// summary/// 修改一个        /// /summary/// param nameidPerson Id/param/// param nameperson新/parampublic void PutModifyPerson(long id, Person person)        {              var p _personLst.Find(x x.Id id);            p.Age person.Age;            p.Name person.Name;            p.Sex person.Sex;        }        /// summary/// 删除一个Person        /// /summary/// param nameidPerson ID/parampublic void DeletePerson(long id)        {            _personLst.RemoveAll(x x.Id id);        } } 一个简单的针对资源的CRUD操作的API就好了不用解析输入不用拼接输出就是那么简单让我们来遛一遛  发送请求谓词为POST语义创建PersonPerson描述在Body里head中声明了Body通过Json序列化。 收到响应响应码204属于2XX类型执行成功Body里没有数据   发送请求谓词为GET语义为查询Person资源Id为1的head中声明希望接收使用XML序列化的数据 收到响应响应码为200执行成功Body中有数据数据使用XML序列化   发送请求谓词为PUT语义为修改ID为1的Person资源修改内容在Body中Content-Type标明Body使用Json序列化在Body中我们将Name修改为Test1Changed 收到响应响应码为204执行成功   发送请求谓词为GET语义为查询ID为1的Person资源Accept标明希望接收到Json数据 收到响应可以看到Body为使用Json序列化的内容Name属性已经变更为Test1Changed   发送请求谓词为DELETE语义为删除ID为1的Person资源 收到响应响应码204执行成功   发送请求谓词为GET语义为查询ID为1的Person资源Accept标明希望接收到Json数据 收到响应响应码为200执行成功响应内容为null资源已删除  这就是我用Fiddler来发送、调用的一组RestFul接口大家可以看到整个调用过程使用到了HTTP的语义用到了谓词路由、内容协商。在增、删、改操作中我都是使用void作为返回值根据HTTP Code 判断大家也可以自定义一些返回数据来做出更进一步的操作描述。  在写了这些API后我们需要在程序中调用我以C#为例写一组对这些接口调用的实现。在C#中传统调用HTTP接口一般有两种办法 WebRequest/WebResponse组合的方法调用和WebClient类进行调用。第一种方法抽象程度较低使用较为繁琐而WebClient主要面向了WEB网页场景在模拟Web操作时使用较为方便但用在RestFul场景下却比较麻烦在Web API发布的同时.NET提供了两个程序集System.Net.Http和System.Net.Http.Formatting。这两个程序集中最核心的类是HttpClient。在.NET4.5中带有这两个程序集而.NET4需要到Nuget里下载Microsoft.Net.Http和Microsoft.AspNet.WebApi.Client这两个包才能使用这个类更低的.NET版本就只能表示遗憾了只能用WebRequest/WebResponse或者WebClient来调用这些API了。        在使用中System.Net.Http这个程序集提供了HttpClient类以及相关的HTTP调用而System.Net.Http.Formatting提供了一些针对HttpClient的帮助扩展更好地支持了内容协商、Content创建等功能。下面我就和大家一起写一下这个例子        我们新建一个控制台程序        代码如下 public class Person    {                public long Id { get; set; }                 public string Name { get; set; }        public int Age { get; set; }        public string Sex { get; set; }        public override string ToString()        {                         return $Id{Id} Name{Name} Age{Age} Sex{Sex};        }    }    class Program    {              static void Main(string[] args)        {                var client new HttpClient();            client.BaseAddress new Uri(http://localhost:22658/); //基本的API URL            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(application/json)); //默认希望响应使用Json序列化            Run(client);            Console.ReadLine();        }        static async void Run(HttpClient client)        {                      var result await AddPerson(client);            Console.WriteLine($添加结果{result}); //添加结果truevar person await GetPerson(client);            Console.WriteLine($查询结果{person}); //查询结果Id1 Nametest Age10 SexF            result await PutPerson(client);            Console.WriteLine($更新结果{result}); //更新结果true            result await DeletePerson(client);            Console.WriteLine($删除结果{result}); //删除结果true        }        static async Taskbool AddPerson(HttpClient client)        {            return await client.PostAsJsonAsync(api/Person, new Person() { Age 10, Id 1, Name test, Sex F }) //向Person发送POST请求Body使用Json进行序列化                                     .ContinueWith(x x.Result.IsSuccessStatusCode);  //返回请求是否执行成功即HTTP Code是否为2XX        }        static async TaskPerson GetPerson(HttpClient client)        {                       return await await client.GetAsync(api/Person/1) //向Person发送GET请求                .ContinueWith(x x.Result.Content.ReadAsAsyncPerson(                              //获取返回Body并根据返回的Content-Type自动匹配格式化器反序列化Bodynew ListMediaTypeFormatter() {new JsonMediaTypeFormatter()/*这是Json的格式化器*/                                                    ,new XmlMediaTypeFormatter()/*这是XML的格式化器*/}));        }        static async Taskbool PutPerson(HttpClient client)        {            return await client.PutAsJsonAsync(api/Person/1, new Person() { Age 10, Id 1, Name test1Change, Sex F }) //向Person发送PUT请求Body使用Json进行序列化                                    .ContinueWith(x x.Result.IsSuccessStatusCode);  //返回请求是否执行成功即HTTP Code是否为2XX        }        static async Taskbool DeletePerson(HttpClient client)        {            return await client.DeleteAsync(api/Person/1) //向Person发送DELETE请求                .ContinueWith(x x.Result.IsSuccessStatusCode); //返回请求是否执行成功即HTTP Code是否为2XX        } }       这就完成了这组API的调用是不是非常简单方便HTTPClient使用全异步的方法并且他有良好的扩展性我会在之后的博客中再聊这个问题。     OK到此为止一组简单的Restful API和C#的调用客户端就完成了但这只是开始Web API是一个很强大的框架他的扩展点非常丰富这些扩展能为我们的开发提供很多的帮助下一篇博文我将为大家带来WEB API中Filter的使用。     博文中如有不正确的地方欢迎大家指正。 原文地址http://www.cnblogs.com/UliiAn/p/5373854.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.huolong8.cn/news/244177/

相关文章:

  • 企业注册百家号可以做网站吗上海网站开发孵化
  • 吸引人的网站类型做企业网站用什么cms
  • dw做的网站如何上传企业官网的运营模式
  • 超市网站建设策划书凡科网建站入门教程
  • 宿迁网站制作云南网站设计哪家专业
  • 泸州网站建设哪家好阿里云怎么放多个网站
  • 小程序 手机网站重庆动画网站建设
  • 惠州网站建设企业建设谷歌公司网站费用
  • 免费建站的手机app找设计公司上哪个网站
  • 网站 医院信息化建设电梯配件做外贸在哪个网站
  • 温州微网站开发自己网站页面设计软件
  • 用英文介绍购物网站坪山做网站公司
  • 豫建设标 网站wordpress主题 资源站
  • 河南省 门户网站建设要求推广有什么好方法
  • 医疗网站建设临沂网站设计
  • 新手学做网站这本书外贸平台招聘
  • 网站建设以及推广销售客户怎么找建设微网站平台
  • 兰州市城市建设设计院公司网站seo优化的
  • 博客网站排名大全网站开发页面设计
  • 网站平台建设费用车陂手机网站建设
  • 网站负责人查询做男装海报的素材网站
  • 大冶网站开发wordpress添加二级踩点
  • 校园门户网站系统建设关键技术苏州企业网站制作设计公司
  • 帮别人做网站开票开什么税目深圳企业网站制作报价
  • 做网站维护学什么编程语言螺旋钢管网站建设
  • 河南省建设厅网站人事网网站还在建设中英文
  • 商城网站建设天软科技网络营销平台名词解释
  • 公司网站开发费用计入什么科目ppt模板大全免费下载简洁
  • 中国商标注册网官方网站音乐主题的网站设计
  • 网站描述怎么修改吗律师网站建设推广