创建新的ASP.NET Web应用程序以开发我的API并在Azure中托管它时,我有两个选择:
我可以创建一个Web API APP并将其托管在Azure API APP中吗?那么它们存在的主要原因是什么?
答案 0 :(得分:2)
根据您的需要,它们只是不同的起点。
Azure API是具有OpenAPI支持的精简API模板。
ASP.NET Web API是一个完整的ASP.NET MVC应用程序,主要用于支持API。
支持身份验证选择(无,个人用户,工作或学校,Windows)。
期望客户端提供令牌(承载令牌或API令牌)。使用Azure门户配置用户(不是API令牌)的身份验证和授权。使用Azure API管理(或其他服务)来管理API令牌。
自动包括MVC以便显示帮助页面。这些与OpenAPI(Swagger)自生成的文档不同。
包括区域,内容,HomeController,字体,脚本和视图
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);
}
}
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
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)
{
}
}
默认情况下启用OpenAPI(Swagger)。 OpenAPI JSON文档位于/ swagger / 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)
{
}
}
答案 1 :(得分:1)
您可以查看link。
Azure App Service中的API应用程序提供的功能可以更轻松地在云和内部部署中开发,托管和使用API。使用API应用程序,您可以获得企业级安全性,简单的访问控制,混合连接,自动SDK生成
Web应用程序是Azure为在App Service中托管网站或Web应用程序而提供的计算资源。计算资源可能位于共享或专用虚拟机(VM)上,具体取决于您选择的定价层。您的应用程序代码在与其他客户隔离的托管VM中运行。
答案 2 :(得分:1)
Web API - 此样板将在同一解决方案中为MVC(模型/视图/控件)模式(Web App)和Web API生成模板。
Azure API应用程序 - 此样板将生成Web API模板,不包括Web应用程序的相关文件。它在app_start下有一个名为SwaggerConfig.cs
的额外配置文件
见here: ASP.NET Core Web API help pages with Swagger / Open API。将API发布到azure时会很有用。