当创建一个新的Azure Web应用程序来开发我的API并将其托管在ASP.NET中时,我有两个选择:
我可以创建Web API应用程序并将其托管在Azure API应用程序中吗?那么它们都存在的主要原因是什么呢?
发布于 2019-01-26 07:04:41
它们只是不同的起点,取决于您的需求。
Azure API是一个支持OpenAPI的精简版API-only模板。
app是一个完整的ASP.NET MVC应用程序,主要面向支持ASP.NET。
区别#1: Web API模板中的身份验证支持
ASP.NET网络应用编程接口
支持身份验证选择(无、个人用户、工作或学校、Windows)。
ASP.NET Azure API应用程序
期望客户端提供令牌(不记名令牌或API令牌)。使用Azure门户配置用户(不是API令牌)的身份验证和授权。使用Azure API管理(或其他服务)管理API令牌。
区别#2: Web API模板中的MVC支持
ASP.NET网络应用编程接口
自动包含MVC以显示帮助页面。这些与OpenAPI (Swagger)自生成的文档不同。
ASP.NET Azure API应用程序
不会自动包含MVC或帮助页
区别#3:支持Web API中UI的文件
ASP.NET网络应用编程接口
包括区域、内容、HomeController、字体、脚本和视图
ASP.NET Azure API应用程序
不同之处#4: Web API模板中的启动配置更多
ASP.NET网络应用编程接口
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
ASP.NET Azure API应用程序
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
区别#5: Azure API模板中的OpenAPI (Swagger)支持
ASP.NET网络应用编程接口
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
ASP.NET Azure API应用程序
默认情况下启用OpenAPI (Swagger)。swagger JSON文档位于/ OpenAPI /docs/v1
public class ValuesController : ApiController
{
// GET api/values
[SwaggerOperation("GetAll")]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[SwaggerOperation("GetById")]
[SwaggerResponse(HttpStatusCode.OK)]
[SwaggerResponse(HttpStatusCode.NotFound)]
public string Get(int id)
{
return "value";
}
// POST api/values
[SwaggerOperation("Create")]
[SwaggerResponse(HttpStatusCode.Created)]
public void Post([FromBody]string value)
{
}
// PUT api/values/5
[SwaggerOperation("Update")]
[SwaggerResponse(HttpStatusCode.OK)]
[SwaggerResponse(HttpStatusCode.NotFound)]
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
[SwaggerOperation("Delete")]
[SwaggerResponse(HttpStatusCode.OK)]
[SwaggerResponse(HttpStatusCode.NotFound)]
public void Delete(int id)
{
}
}
发布于 2017-12-15 10:05:44
你可以检查这个link。
Azure应用程序服务中的API应用程序提供了一些功能,可以更轻松地在云和内部部署中开发、托管和使用API。通过API应用程序,您可以获得企业级安全性、简单的访问控制、混合连接、自动生成SDK
Service.The是Azure提供的计算资源,用于在应用程序中托管网站或Web应用程序计算资源可能位于共享或专用虚拟机(VM)上,具体取决于您选择的定价层。您的应用程序代码在与其他客户隔离的托管VM中运行。
发布于 2018-06-10 01:40:10
Web API -此模板将在同一解决方案中生成MVC(模型/视图/控制)模式( Web App)和Web API的模板。
Azure API app -此样板将生成Web API的模板,不包括web应用的相关文件。它在app_start下有一个额外的配置文件,名为SwaggerConfig.cs
。
参见here: ASP.NET Core Web API help pages with Swagger / Open API。当您将API发布到azure中时,它会很有帮助。
https://stackoverflow.com/questions/47819233
复制相似问题