本文目录
- webapi 无法显示此网页,网站响应时间过长
- 如何使 WebAPI 自动生成漂亮又实用在线API文档
- WebService和Webapi的区别
- webApi如何将一个页面
- webapi 怎样获取相对路径
- 如何改写WebApi部分默认规则
- 如何让webapi的版本降为.net4.0
- 如何使用程序调用webApi接口
- WebAPI与传统的WebService有哪些不同
- 怎样操作WebAPI接口
webapi 无法显示此网页,网站响应时间过长
你想问的是webapi 无法显示此网页,网站响应时间过长怎么办吧?网站响应时间过长进不去可以检查一下服务器是否能远程连接。
服务器网站响应时间过长的问题解决方法如下:
1、机器的配置。包括服务器端与客户机端的硬件配置程度,同样的网络环境下,双核的服务器的运算能力肯定要强一些,毫无疑问的,同样的网络环境下,用一台赛扬的机器和奔四双核处理器的电脑,打开同样的网页,速度,也肯定不一样。
2、服务器软件。软件多少、稳定和软件的正确配置,都会影响到服务器环境,以致影响到网络速度。服务器安装软件防火墙,会牺牲一些网络速度,所以VPS、或独立服务器用户装一个防火墙足矣。
3、DNS解析时间。DNS解析包括往返解析的次数及每次解析所花费的时间,两者的积就是DNS解析所消耗的时间,因此,很多人忽视了DNS的问题。
如何使 WebAPI 自动生成漂亮又实用在线API文档
1、如何引入组件
首先,我们需要定义一个API项目
然后通过Nuget引入组件。记住选下图中的第三个。
引入成功后,将向项目里面添加一些主要文件:
•Scripts\WebApiTestClient.js
•Areas\HelpPage\TestClient.css
•Areas\HelpPage\Views\Help\DisplayTemplates\TestClientDialogs.cshtml
•Areas\HelpPage\Views\Help\DisplayTemplates\TestClientReferences.cshtml
2、如何使用组件
1、修改Api.cshtml文件
通过上述步骤,就能将组件WebAPITestClient引入进来。下面我们只需要做一件事:打开文件 (根据 Areas\HelpPage\Views\Help) Api.cshtml 并添加以下内容:
•@Html.DisplayForModel(“TestClientDialogs“)
•@Html.DisplayForModel(“TestClientReferences“)
WebService和Webapi的区别
Web Service特征
1、它是基于SOAP协议的,数据格式是XML
2、只支持HTTP协议
3、它不是开源的,但可以被任意一个了解XML的人使用
4、它只能部署在IIS上
Web API特征(红色标记与WebService区别)
1、这是一个简单的构建HTTP服务的新框架
2、在.net平台上Web API 是一个开源的、理想的、构建REST-ful 服务的技术
3、不像WCF REST Service.它可以使用HTTP的全部特点(比如URIs、request/response头,缓存,版本控制,多种内容格式)
4、它也支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮
5、它可以部署在应用程序和IIS上
6、这是一个轻量级的框架,并且对限制带宽的设备,比如智能手机等支持的很好
7、Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。
8、Web API非常适合构建移动客户端服务
以下情况可以考虑用Web API
1、 需要Web Service但是不需要SOAP
2、 需要在已有的WCF服务基础上建立non-soap-based http服务
3、 只想发布一些简单的Http服务,不想使用相对复杂的WCF配置
4、 发布的服务可能会被带宽受限的设备访问
5、希望使用开源框架,关键时候可以自己调试或者自定义一下框架
6、如果服务需要在http协议上,并且希望利用http协议的各种功能
7、如果服务需要被各种客户端(特别是移动客户端)调用
小结(仅供参考)
总体来说,两者都是服务,只是表现形式存在一些差异
webapi多用于基于http请求的服务应用,比如说移动服务端或者需要提供第三方API 服务的场景下
webservice也可以应用于webapi所在的场景,但是如果是我的选择,我一般是做为内部服务的使用,好比如果一个系统我会用wcf/webservice作为内部子系统间的服务通信,而webapi用于外部服务的请求~
-webapi br baidu com
webApi如何将一个页面
第一步:新建项目后,找到Global.asax文件----找到GlobalConfiguration.Configure(WebApiConfig.Register)方法------按F12进入 WebApiConfig.Register方法中----添加内容红框框-api
知识点:路由器注册顺序是由上往下的,会先从上面进行匹配。
路由器的名称不能重名,否则报错【CustomApi/DefaultApi】
第二步:设置webapi项目为启动项,然后启动,在网页路径上加api/values(控制器名称不要Controller)
知识点:因为ValuesController是项目自带的,那么这一次的请求与 DefaultApi的路由规格是一致的。
webapi 怎样获取相对路径
WebAPI 如何获取相对路径 获取本地路径~
WebAPi不可以使用Server.MapPath()的方式获取路径,所以可以使用一下方式获取:
System.Web.Hosting.HostingEnvironment.MapPath(“~/“)
-webapi br baidu com
如何改写WebApi部分默认规则
如何改写WebApi部分默认规则
如何改写WebApi部分默认规则为什么要改最近公司在推广SOA框架,第一次正经接触这种技术(之前也有但还是忽略掉吧),感觉挺好,就想自己也折腾一下,实现一个简单的SOA框架
用过mvc进行开发,印象之中WebApi和Mvc好像是一样的,带着这样的预设开始玩WebApi,然后被虐得找不到着北。
被虐的原因,是Mvc和WebApi在细节上差别还是有点大,例如:
在Mvc中,一个Controller中的所有公共方法一般情况下可以响应POST方法,而WebApi中不行在Mvc中,一个Action方法中的参数即可来自Url,也可以来自Form,而WebApi中不是这样,具体的规则好像是除非你在参数中加了[FromBody],否则这个参数永远也无法从Form中获取这是这两种技术我知道的最大的差别,其他的没发现或者说是没注意,也有可能这些差别是因为我不会用,毕竟接触WebApi时间不长。如果我有些地方说错了,请指正。
就这两个不同点,我查了很多资料,也没有办法解决,第一个还好,加个特性就行了,第二个的话好像就算加了[FromBody]也还是不行,感觉就是一堆限制。接着,既然这么多让我不爽的地方,那我就来改造它吧。
改造的目标,有以下几个:
不再限制控制器必须以Controller结尾,其实这个并不是必须,只是被限制着确实不太舒服所有方法可以响应所有的请求方法,如果存在方法名相同的方法,那么才需要特性来区分Action中的参数优先从Url中获取,再从Body中获取,从Body中获取的时候,优先假设Body中的数据是表单参数,若不是则将Body中的数据当作json或xml数据进行获取定下了目标之后,感觉微软为什么要这样设计WebApi呢,或许它有它的道理。
目标好定,做起来真是头大,一开始想参考公司的SOA框架的实现,但因为我用了OWIN技术来进行宿主,而看了公司的框架好像不是用的这个,总之就是看了半天没看懂应该从哪个地方开始,反而是越看越糊,毕竟不是完全一样的技术,所以还是自己弄吧。
OK,废话了这么多,进入正题吧。首先来一个链接,没了这个文章我就不可能改造成功:
对Action的参数的限制这一块比较难,我试了很久才成功,而且还有坑
public class ActionValueBinder : DefaultActionValueBinder { protected override HttpParameterBinding GetParameterBinding(HttpParameterDescriptor parameter) { ParameterBindingAttribute parameterBinderAttribute = parameter.ParameterBinderAttribute; if (parameterBinderAttribute == null) { ParameterBindingRulesCollection parameterBindingRules = parameter.Configuratio
-api
如何让webapi的版本降为.net4.0
vs中,打开 工具 =》 nuget程序包管理器 =》 程序包管理器控制台,然后其中一行一行地输入以下的更新指令。
Update-Package Microsoft.AspNet.WebApi -Version 5.2.2
汉化包
Update-Package Microsoft.AspNet.WebApi.Client.zh-Hans -Version 5.2.2
Update-Package Microsoft.AspNet.WebApi.Core.zh-Hans -Version 5.2.2
Update-Package Microsoft.AspNet.WebApi.WebHost.zh-Hans -Version 5.2.2
Update-Package EntityFramework -Version 6.0.1
Update-Package EntityFramework.zh-Hans -Version 6.0.1
Update-Package Microsoft.AspNet.Mvc -Version 5.2.2
Update-Package Microsoft.AspNet.Mvc.zh-Hans -Version 5.2.2
Update-Package Microsoft.AspNet.WebApi.HelpPage -Version 5.2.2
Update-Package Microsoft.AspNet.WebApi.OData -Version 5.2.2
Update-Package Microsoft.AspNet.WebApi.Tracing -Version 5.2.2
上面package的版本号参考了vs2013中的webapi项目模板中的版本号。引入这些包的过程中,vs有可能提示要重启vs,请重启vs。
错误:“未能找到元数据文件”
更新完package之后,重新编译,有可能出现“未能找到元数据文件”。
解决的方法是找到出错的项目,然后去掉报错的引用项,然后再重新引用。
错误:预定义的类型“Microsoft.CSharp.RuntimeBinder.Binder“未定义或未导入 错误
再次编译,有可能出现错误提示“预定义的类型“Microsoft.CSharp.RuntimeBinder.Binder“未定义或未导入” ,解决的方法是:
(1)用记事本打开项目文件(后缀名为 .csproj ),找到《ItemGroup》项,可能会找到多个,选择其中一个,在里面加入
《Reference Include=“Microsoft.CSharp“ /》
《Reference Include=“System.Core“ /》
(2)保存项目文件,然后重新加载项目项目文件。
-webapi br baidu com
如何使用程序调用webApi接口
function getAPI(url){
return new Promise((resolve, reject) =》 {
$.ajax({
url: url,
type: ’GET’,
dataType: ’json’,
data: {param1: ’value1’},
})
.done(function(data) {
resolve({ data:data })
})
});
}
let _api = await this.getAPI(url);
这是我用ES6与异步方式写的url就是调用的API地址-api
WebAPI与传统的WebService有哪些不同
WebService是利用HTTP管道实现了RPC的一种规范形式,放弃了对HTTP原生特征与语义的完备支持;而WebAPI是要保留HTTP原生特征与语义的同时实现RPC,但WebAPI的实现风格可以是千姿百态,RESTful只是实现了其中一种风格,你也可以定义一种风格,并实现-webapi br baidu com
WebAPI相比WebService更为轻量级、灵活、优化好的情况下,性能更有优势,但是对复杂或大型业务的描述与使用增加了无形的成本
WebAPI可以更好的利用HTTP与生俱来的特征,如:缓存、代理、安全、头信息扩展,反之,部分实现方式WebService无法利用HTTP特征
本质上WebAPI与传统模式的WebService都是实现RPC,远程服务;传统的WebService只是利用了HTTP通道,进行独立的交互,但是这个交互协议可以移植到其他协议下运作,而WebAPI天生与HTTP依赖无法移植-api
WebService与WebAPI在80端口下工作,都可以绕开默认的网络防火墙限制,因为默认下网络防火墙对系统级端口与协议下的内容是开放的
WebService与RESTful WebAPI服务端都可以使用反射来实现自动化部署,只是前者更为容易,因为存在标准的规范,后者只是开发WebAPI的推荐风格,实现上需要自己来规范与描述,处理不兼容问题;WebAPI在无反射下的业务实现更为直观接近MVC模式下的开发的应用,通用,性能更好、更为灵活,能够直接利用HTTP的动态网页技术开发接口与功能-webapi br baidu com
WebAPI对于交互数据的格式没有明确规定,使得其可以更好的使用在特定的软件运行平台,但是需要开发者对各种格式的支持;传统的WebService则要求使用服务的平台对数据格式强制适应,服务端的交互数据处理变得更加快捷容易,而增加了不同使用端的对服务交互困难度-api
怎样操作WebAPI接口
先定义一个简单的webapi,简单到差不多直接用vs2010自动生成的webapi代码。
其中的TestModle是一个简单的class,如下
public class TestModle
{
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
}
前端页面放四个代表get,post,put,delete的按钮,在加一个div显示返回值
前端代码中加载jquery,在定义四个按钮的click事件
get和post,我习惯用$.get和$.post,当然也能用$.ajax.
get直接返回webapi get的return值,post的话我就不在后端做处理了直接返回传入的值,这里只做示范
put和delete,只能用$.ajax来处理。
put的话一般用于update某个id的数据信息
delete用于删除某个id的数据,如下图所示
点击每个按钮,可以在页面上看到相应的效果
本回答由提问者推荐
评论
1 1
xzozxzb | 汽车顾问向TA咨询
擅长: 汽车
其他回答
先定义一个简单的webapi,简单到差不多直接用vs2010自动生成的webapi代码。
其中的TestModle是一个简单的class,如下
public class TestModle
{
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
}
前端页面放四个代表get,post,put,delete的按钮,在加一个div显示返回值
前端代码中加载jquery,在定义四个按钮的click事件
get和post,我习惯用$.get和$.post,当然也能用$.ajax.
get直接返回webapi get的return值,post的话我就不在后端做处理了直接返回传入的值,这里只做示范
put和delete,只能用$.ajax来处理。
put的话一般用于update某个id的数据信息
delete用于删除某个id的数据,如下图所示
点击每个按钮,可以在页面上看到相应的效果
-webapi br baidu com