本篇文章给大家谈谈web api管理,以及web api对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享web api管理的知识,其中也会对web api进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
有没有web版的api管理工具
Web版的api管理工具(管理平台)有rap、eoLinker、小幺鸡、sosoapi、apizza,国外的有swagger。试用过之后选择了eoLinker,对成员操作记录细致,很方便协作,安装插件后也支持本地请求,方便测试。
Web API 版本有几种控制方式?
Web API 版本的控制方式有五种,分别如下:
方式一:利用URL
方式二:利用用户自定义的request header
方式三:利用content type
方式四:利用content type
这个方式和方式三的小不同的地方是,把版本号分离出来了。
方式五:利用URL里的parameter
如何使用 Web API 来对 MVC 应用程序进行身份验证
首先
web api管理,让
web api管理我们先更新 API 项目
我们将先对 API 项目进行必要
web api管理的修改
web api管理,修改完成之后再切换到 Web 项目对客户端进行更新。
第1步:我们需要一个数据库
在能做任何操作之前我们需要先创建一个数据库。本例中将使用 SQL Server Express。如果你没有安装,可以从这里下载 SQL Server Express。安装完成之后,创建一个名为 CallingWebApiFromMvc 的数据库。这就是第一步要做的。
Api 项目还需要一个数据库连接字符串,否则我们寸步难行。把下面这段代码插入到 Api 项目的Web.config 文件中:
<connectionStrings
<add name="ApiFromMvcConnection" connectionString="Data Source=(local);Initial Catalog=CallingWebApiFromMvc;Integrated Security=True" providerName="System.Data.SqlClient" /</connectionStrings
认证(Identity)框架会自动创建我们管理用户所需要的成员关系表,现在不需要担心去提前创建它们。
第2步:添加相关的Nuget包
接下来我们添加用于OWIN和Windows认证的Nuget包。打开包管理控制台,切换Api项目为缺省项目,输入以下命令:
Install-Package Microsoft.AspNet.WebApi.Owin
Install-Package Microsoft.Owin.Host.SystemWeb
Install-Package Microsoft.AspNet.Identity.EntityFramework
Install-Package Microsoft.AspNet.Identity.Owin
使用这些包可以在我们的应用中启动一个OWIN服务器,然后通过EntityFramework把我们的用户保存到SQL Server。
第3步:添加管理用户的Identity类
我们使用基于Windows认证机制之上的Entity框架来管理数据库相关的业务。首先我们需要添加一些用于处理的类。在Api项目里添加一个Identity目录作为我们要添加类的命名空间。然后添加如下的类:
public class ApplicationUser : IdentityUser
{
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser
{ public ApplicationDbContext() : base("ApiFromMvcConnection") {}
public static ApplicationDbContext Create()
{ return new ApplicationDbContext();
}
}
注意我们传给基类构造函数的参数ApiFromMvcConnection要和Web.config中的连接字符串中的name相匹配。
public class ApplicationUserManager : UserManager<ApplicationUser
{ public ApplicationUserManager(IUserStore<ApplicationUser store) : base(store)
{
} public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager options, IOwinContext context)
{ var manager = new ApplicationUserManager(new UserStore<ApplicationUser (context.Get<ApplicationDbContext ()));
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser (manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = true,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = true,
}; var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser (dataProtectionProvider.Create("ASP.NET Identity"));
} return manager;
}
}
第4步:添加OWIN启动类
为了让我们的应用程序作为OWIN服务器上运行,我们需要在应用程序启动时初始化。我们可以通过一个启动类做到这一点。我们将装点这个类的
OwinStartup属性,因此在应用程序启动时触发。这也意味着,我们可以摆脱的Global.asax和移动它们的
Application_Start代码转换成我们新的启动类。
using Microsoft.Owin;
[assembly: OwinStartup(typeof(Levelnis.Learning.CallingWebApiFromMvc.Api.Startup))]
namespace Levelnis.Learning.CallingWebApiFromMvc.Api
{
using System;
using System.Web.Http;
using Identity;
using Microsoft.Owin.Security.OAuth;
using Owin;
using Providers;
public class Startup
{ public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configure(WebApiConfig.Register);
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager (ApplicationUserManager.Create); var oAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/api/token"),
Provider = new ApplicationOAuthProvider(),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
AllowInsecureHttp = true
};
// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(oAuthOptions);
}
}
}
在应用程序启动时,我们正在建立自己的服务器。在这里,我们配置令牌端点并设置自己的自定义提供商,我们用我们的用户进行身份验证。在我们的例子中,我们使用了ApplicationOAuthProvider类。让我们来看看现在:
第5步:添加OAuth的提供商
public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider
{ public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
return Task.FromResult<object (null);
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var userManager = context.OwinContext.GetUserManager<ApplicationUserManager ();
var user = await userManager.FindAsync(context.UserName, context.Password);
if (user == null)
{
context.SetError("invalid_grant", "The user name or password is incorrect."); return;
}
var oAuthIdentity = await user.GenerateUserIdentityAsync(userManager, OAuthDefaults.AuthenticationType); var cookiesIdentity = await user.GenerateUserIdentityAsync(userManager, CookieAuthenticationDefaults.AuthenticationType); var properties = CreateProperties(user.UserName); var ticket = new AuthenticationTicket(oAuthIdentity, properties);
context.Validated(ticket);
context.Request.Context.Authentication.SignIn(cookiesIdentity);
}
private static AuthenticationProperties CreateProperties(string userName)
{
var data = new Dictionary<string, string
{
{
"userName", userName
}
};
return new AuthenticationProperties(data);
}
}
我们感兴趣的是这里2种方法。第一,ValidateClientAuthentication,只是验证客户端。我们有一个客户端,所以返回成
功。这是一个异步方法签名但没有异步调用发生。正因为如此,我们可以离开了异步修改,但我们必须返回一个任务自己。我们增加了一个名为
GenerateUserIdentityAsync的ApplicationUser,它看起来像这样的方法:
public class ApplicationUser : IdentityUser
{ public async Task<ClaimsIdentity GenerateUserIdentityAsync(UserManager<ApplicationUser manager, string authenticationType)
{
var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
return userIdentity;
}
}
第6步:注册一个新用户 - API端
所以,我们有到位的所有Identity类管理用户。让我们来看看RegisterController,将新用户保存到我们的数据库。它接受一个RegisterApi模式,这是简单的:
public class RegisterApiModel
{
[Required]
[EmailAddress] public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
public string Password {
get; set;
}
[Required]
[Display(Name = "Confirm Password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
控制器本身,如果注册成功只是返回一个200 OK响应。如果验证失败,则返回401错误请求的响应。
public class RegisterController : ApiController
{ private ApplicationUserManager UserManager
{ get
{ return Request.GetOwinContext().GetUserManager<ApplicationUserManager ();
}
} public IHttpActionResult Post(RegisterApiModel model)
{ if (!ModelState.IsValid)
{ return BadRequest(ModelState);
} var user = new ApplicationUser
{
Email = model.Email,
UserName = model.Email,
EmailConfirmed = true
};
var result = UserManager.Create(user, model.Password);
return result.Succeeded ? Ok() : GetErrorResult(result);
}
private IHttpActionResult GetErrorResult(IdentityResult result)
{
if (result == null)
{
return InternalServerError();
}
if (result.Errors != null)
{
foreach (var error in result.Errors)
{
ModelState.AddModelError("", error);
}
}
if (ModelState.IsValid)
{
// No ModelState errors are available to send, so just return an empty BadRequest.
return BadRequest();
}
return BadRequest(ModelState);
}
}
web api是什么
Web API是网络应用程序接口。
今天的web计算平台包含了广泛的功能,其中的大部分均可以通过API(应用程序编程接口)访问。从简
单的社会书签服务del.icio.us,到复杂得多的amazon s3'全虚拟化存储平台,想想能用这些web api做点什么,真是惊人。
web平台归为6个基本设施,并简要概述些相关产品。其间的线索是这些产品都提供了API,这意味者他们本身可以被其他服务整合。
存储服务:存储服务关注抽象化和虚拟化存储。这个领域的领头羊是amazon s3,在我的article in web 2.0 journal中对其曾有较深入的探讨。对开发者而言,S3提供了极其精简抽象的如哈希表之类的API,允许你轻松存取信息。
另一个有意思的服务是openemy,它提供了类似于文件系统接口的api,但增加了给文件标签的能力。今
年早些时候,TechCrunch剖析了其他一些在线存储服务。但至今我们还没看到传说中颠覆性的存储服务GDrive(来自google)和LiveDrive(来自微软),他们很大可能都会提供api。
消息服务:消息服务在概念上类似于传统意义上的中间件。由于技术和商业上的复杂性,它们还没有被大规模开发。短期内可见的基于web的通讯服务是Amazon Simple Queue Service。这个服务使得任意应用间安全和可扩展的基于队列的通讯更为便利。
计算服务:目前还没有一个一般的可以通过api访问的web计算服务黑盒,但有不少技术指向这个方向。一个是alexavertical search platform,在下面的搜索服务小节会提及更多,第二个是网格计算,比如 sungrid,datasynapse's gridserver或者platform's symphony。
在API里封装任意的计算任务是个相当具挑战性的任务,也许还要很多年这种服务才会广泛流行。
信息服务:信息服务提供海量特定的信息。包括像Google Maps API的地理数据,像Amazon E-Commerce,Amazon historcal Pricing Services的产品数据和最新发布的Yahoo!answer's API登。这些服务的共同点是它们都提供
简单的API来访问海量数据,可能催生孤立信息间的不可预知的交叉应用。
搜索服务:因为搜索在web领域的基础和统治地位,搜索服务构成了新的web基础架构的关键部分。Google search
api是较早的如今已成典型的搜索抽象机制。另一个例子是alexa search platform,它的设计带动了一系列挑战google地位的垂直搜索引擎。相当有意思的是从技术上看,alexa search platform更多表现为一个计算服务,不过局限在搜索领域而已。这意味者其他服务的可能性,比如排序服务或者数据转换服务。
web2.0服务:最后一类宽泛的叫它们web2.0服务,名字不一定切题,但它包含诸如del.icio.us,flickr,basecamp
。John Musser在Programmableweb中编译了一些非常有影响的api。
这些特定的服务将来会成为上述其他服务的使用者,但当前它们的价值更多体现在它们提供了清晰的,
特定的,简单的api来查看和改变大家拥有的信息。尽管它们看起来更像分子而非原子,但在当今的web领域里,它们是如此基本的服务,所以我把它们视为构成成分还是很有意义的。
如何在ubuntu中搭建web api
一条命令可以让
web api管理你在ubuntu上很方便地安装web服务器 sudo tasksel install lamp-server用这个可以一次安装好apache+php+mysql 再两条命令让
web api管理你安装上phpmyadmin,让
web api管理你方便地管理mysql数据库
web api管理: sudo apt-get install phpmyadminsudo ln -s /usr/shar...
关于web api管理和web api的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
web api管理的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于web api、web api管理的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~