webapi多版本文档|如何使 WebAPI 自动生成漂亮又实用在线API文档

Ⅰ webapi 发布后带有多语言文件夹de es

在新出的MVC中,增加了WebAPI,用于提供REST风格的WebService,新生成的WebAPI项目和典型的MVC项目一样,包含主要的Models、Views、Controllers等文件夹和Global.asax文件。Views对于WebAPI来说没有太大的用途

Ⅱ 如何在Windows Server2008R2中部署WebAPI

在iis中选中需要设置的webapi站点,双击“处理程序映射”,在弹版出框中添加对webapi的请求权映射。请求路径:api /*可执行文件:%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll,注意32位和64位路径的区别。名称:webapi,自定义名称即可修改应用程序池的管道模式将webapi的应用程序池的管道模式修改为经典更新dll映射添加之后,访问站点,不会报404错误了,但会报一些dll文件未能加载,一共有4个,名称分别如下:System.Web.WebPages.Deployment.dllMicrosoft.Web.Infrastructure.dllSystem.Web.WebPages.Razor.dllSystem.Web.WebPages.dll将上面四个dll文件复制到webapi站点到bin目录中,问题解决。

Ⅲ WebApi.dll加载失败,有图,出现之后,电脑变慢了, 。。。DLL文件问题

去别的WIN7(同一个版本系统,注意32位和64位问题)系统上把上边提示的文件拷过来,然后放进上边提示的文件夹内就OK了,百试百灵

Ⅳ WebService和Webapi的区别

webapi用的是http协议,webservice用的是soap协议 webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作http soap关系http:是一个客户端和服务器端请求和应答的标准(TCP)。http协议其目的是为了提供一种发布和接收htttp页面的方法一http协议的客户端与服务器的交互:由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如”HTTP/1.1 200 OK”,和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。soap 协议:它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。soap在http协议的基础上,一个基于XML的协议。不同:都是底层的通信协议,请求包的格式不同而已,soap包是XML格式,http纯文本格式。关系:SOAP是个通信协议, SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数, 放在HTTP BODY上提交个WEB SERVICE服务器(SERVLET,ASP什么的) 处理完成后,结果也写成XML作为RESPONSE送回用户端, 为了使用户端和WEB SERVICE可以相互对应,可以使用WSDL作为这种通信方式的描述文件,利用WSDL工具可以自动生成WS和用户端的框架文件,SOAP具备把复杂对象序列化捆绑到XML里去的能力。WCF和WEB API我该选择哪个?1、当你想创建一个支持消息、消息队列、双工通信的服务时,你应该选择WCF2、当你想创建一个服务,可以用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他传输通道不可用的时候也可以支持HTTP。3、当你想创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API4、当你想让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web APISOAP:Simple Object Access Protocol 简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。HTTP协议: 应用层 TCP协议 : 传输层HTTP协议详解之响应篇在接收和解释请求消息后,服务器返回一个HTTP响应消息。HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文 1、状态行格式如下: HTTP-Version Status-Code Reason-Phrase CRLF 其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息–表示请求已接收,继续处理 2xx:成功–表示请求已被成功接收、理解、接受 3xx:重定向–要完成请求必须进行更进一步的操作 4xx:客户端错误–请求有语法错误或请求无法实现 5xx:服务器端错误–服务器未能实现合法的请求 常见状态代码、状态描述、说明: 200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常 eg:HTTP/1.1 200 OK (CRLF)2、响应报头后述3、响应正文就是服务器返回的资源的内容

Ⅳ 如何使 WebAPI 自动生成漂亮又实用在线API文档

1.1 SwaggerUISwaggerUI 是一个简单的Restful API 测试和文档工具。简单、漂亮、易用(官方demo)。通过读取jsON 配置显示API. 项目本身仅仅也只依赖一些 html,css.js静态文件. 你可以几乎放在任何Web容器上使用。1.2 SwashbuckleSwashbuckle 是.NET类库,可以将WebAPI所有开放的控制器方法生成对应SwaggerUI的JSON配置。再通过SwaggerUI 显示出来。类库中已经包含SwaggerUI 。所以不需要额外安装。2.快速开始创建项目 OnlineAPI来封装网络音乐服务(示例下载) ,通过API可以搜索、获取音乐的信息和播放连接。我尽量删除一些我们demo中不会用到的一些文件,使其看上去比较简洁。WebAPI 安装 SwashbuckleInstall-Package Swashbuckle代码注释生成文档说明。Swashbuckle 是通过生成的XML文件来读取注释的,生成 SwaggerUI,JSON 配置中的说明的。安装时会在项目目录 App_Start 文件夹下生成一个 SwaggerConfig.cs 配置文件,用于配置 SwaggerUI 相关展示行为的。如图:将配置文件大概99行注释去掉并修改为c.IncludeXmlComments(GetXmlCommentsPath(thisAssembly.GetName().Name));并在当前类中添加一个方法/// <summary>/// </summary>/// <param name="name"></param>/// <returns></returns>protected static string GetXmlCommentsPath(string name){ return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);}紧接着你在此Web项目属性生成选卡中勾选 “XML 文档文件”,编译过程中生成类库的注释文件添加网络音乐 3个API访问 http://<youhost>/swagger/ui/index,最终显示效果我们通过API 测试API 是否成功运行3.添加自定义HTTP Header在开发移动端 API时常常需要验证权限,验证参数放在Http请求头中是再好不过了。WebAPI配合过滤器验证权限即可首先我们需要创建一个 IOperationFilter 接口的类。IOperationFilterusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Http;using System.Web.Http.Description;using System.Web.Http.Filters;using Swashbuckle.Swagger;namespace OnlineAPI.Utility{ public class HttpHeaderFilter : IOperationFilter { public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) { if (operation.parameters == null) operation.parameters = new List<Parameter>(); var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline(); //判断是否添加权限过滤器 var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter); //判断是否允许匿名方法 var allowAnonymous = apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any(); if (isAuthorized && !allowAnonymous) { operation.parameters.Add(new Parameter { name = "access-key", @in = "header", description = "用户访问Key", required = false, type = "string" }); } } }}在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法类添加一行注册代码c.OperationFilter<HttpHeaderFilter>();添加Web权限过滤器using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Http;using System.Text;using System.Web;using System.Web.Http;using System.Web.Http.Controllers;using Newtonsoft.Json;namespace OnlineAPI.Utility{ /// <summary> /// /// </summary> public class AccessKeyAttribute : AuthorizeAttribute { /// <summary> /// 权限验证 /// </summary> /// <param name="actionContext"></param> /// <returns></returns> protected override bool IsAuthorized(HttpActionContext actionContext) { var request = actionContext.Request; if (request.Headers.Contains("access-key")) { var accessKey = request.Headers.GetValues("access-key").SingleOrDefault(); //TODO 验证Key return accessKey == "123456789"; } return false; } /// <summary> /// 处理未授权的请求 /// </summary> /// <param name="actionContext"></param> protected override void HandleUnauthorizedRequest(HttpActionContext actionContext) { var content = JsonConvert.SerializeObject(new {State = HttpStatusCode.Unauthorized}); actionContext.Response = new HttpResponseMessage { Content = new StringContent(content, Encoding.UTF8, "application/json"), StatusCode = HttpStatusCode.Unauthorized }; } }}在你想要的ApiController 或者是 Action 添加过滤器[AccessKey]最终显示效果4.显示上传文件参数SwaggerUI 有上传文件的功能和添加自定义HTTP Header 做法类似,只是我们通过特殊的设置来标示API具有上传文件的功能using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Http.Description;using Swashbuckle.Swagger;namespace OnlineAPI.Utility{ /// <summary> /// /// </summary> public class UploadFilter : IOperationFilter { /// <summary> /// 文件上传 /// </summary> /// <param name="operation"></param> /// <param name="schemaRegistry"></param> /// <param name="apiDescription"></param> public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) { if (!string.IsNullOrWhiteSpace(operation.summary) && operation.summary.Contains("upload")) { operation.consumes.Add("application/form-data"); operation.parameters.Add(new Parameter { name = "file", @in = "formData", required = true, type = "file" }); } } }}在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法类添加一行注册代码c.OperationFilter<UploadFilter>();API 文档展示效果

Ⅵ 如何执行使用webapi HttpClient文件上传多后

HttpClient c = new HttpClient();var fileContent = new ByteArrayContent(new byte[100]);fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "myFilename.txt" };var formData = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("name", "ali"), new KeyValuePair<string, string>("title", "ostad") });MultipartContent content = new MultipartContent();content.Add(formData);content.Add(fileContent);c.PostAsync(myUrl, content);

Ⅶ 如何让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.2Update-Package Microsoft.AspNet.WebApi.Core.zh-Hans -Version 5.2.2Update-Package Microsoft.AspNet.WebApi.WebHost.zh-Hans -Version 5.2.2Update-Package EntityFramework -Version 6.0.1Update-Package EntityFramework.zh-Hans -Version 6.0.1Update-Package Microsoft.AspNet.Mvc -Version 5.2.2Update-Package Microsoft.AspNet.Mvc.zh-Hans -Version 5.2.2Update-Package Microsoft.AspNet.WebApi.HelpPage -Version 5.2.2Update-Package Microsoft.AspNet.WebApi.OData -Version 5.2.2Update-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)保存项目文件,然后重新加载项目项目文件。


赞 (0)