asp.net-web-api2asp.net-web-api2入门


备注

本节概述了asp.net-web-api2是什么,以及开发人员为什么要使用它。

它还应该提到asp.net-web-api2中的任何大型主题,并链接到相关主题。由于asp.net-web-api2的文档是新的,您可能需要创建这些相关主题的初始版本。

Hello Web Api

Web Api 2 - Hello World示例

我们将创建一个新的Web Api简单应用程序,它使用消息和用户名返回给我们Json。
开始吧!首先使用Visual Studio创建新的Web Api项目,然后选择Empty Template。一定要检查“Web Api”文件夹:

在此处输入图像描述

注意我没有选择“Web Api”模板,因为它添加了对ASP.NET MVC的引用以提供API帮助页面。在这样的基础应用中,我们并不需要它。

添加模型

模型是一个C#类,代表我们的应用程序中的一些数据。 ASP.NET Web API能够自动将模型序列化为JSON,XML或其他一些格式(取决于配置)。

在我们的应用程序中,我们将只创建一个模型,但真实世界的应用程序通常有很多。

在解决方案资源管理器中,右键单击Models文件夹 。接着选择Add ,然后选择Class 。将类命名为“HelloMessage”。我们的模型需要两个属性: MessageTextUserName

namespace WebApiHelloWorld.Models
{
    public class HelloMessage
    {
        public string MessageText { get; set; }
        public string UserName { get; set; }
    }
}
 

添加控制器

控制器处理HTTP请求。我们的应用程序只需要一个控制器,它返回带有Hello消息和用户名的Json(我们将在URL中传递)。
在解决方案资源管理器中,右键单击Controllers文件夹 。接着选择Add ,然后选择Controller 。在打开的窗口中,选择Web API Controller - Empty ,然后单击Add

在此处输入图像描述

将控制器名称设置为“HelloController”。接下来编辑创建控制器的代码。我们需要添加返回Hello消息的方法。

using System.Web.Http;
using WebApiHelloWorld.Models;

namespace WebApiHelloWorld.Controllers
{
    public class HelloController : ApiController
    {
        public HelloMessage GetMessage(string name)
        {
            HelloMessage message = new HelloMessage
            {
                MessageText = "Hello my Dear!",
                UserName = name
            };

            return message;
        }
    }
}
 

注意务必using WebApiHelloWorld.Models 添加。没有它,您的控制器将找不到HelloMessage类。

就这样!现在,您只需构建并启动应用程序。只需按Ctrl + F5或只需按F5 (无需调试即可启动)。 Visual Studio将推出Web浏览器。你需要打电话给你的控制器。为此,请在URL“/ api / hello?name = John”的末尾添加。结果应该是:

{
    "MessageText": "Hello my Dear!",
    "UserName": "John"
}
 

安装或设置

有关设置或安装asp.net-web-api 2的详细说明。

什么和为什么Asp.Net Web API2?

什么和为什么?

Asp.Net的Web API2是Web API的最新版本。使用Asp.Net框架提供的所有优点,这是一种实现RESTful Web服务的简单方法。一旦理解了REST的基本原理,就可以很容易地实现Asp.net Web API2。 Web API2构建于Asp.Net的模块化可插拔管道模型之上。这意味着当托管Web API2的服务器收到请求时,它首先通过Asp.Nets请求管道。如果您发现默认功能不足以满足您的需求,则可以轻松添加自己的模块。随着ASP.net vNext 上的最新公告,这也意味着您可以在Windows Server之外托管Web API2,从而打开一系列用例。详情请见此处

怎么样?

Web API2使用MVC中的Controller和Action概念。资源直接映射到控制器;您通常会为每个主要数据实体(产品,人员,订单等)使用不同的控制器。 Web API2使用Asp.Net路由引擎将URL映射到控制器。通常,API保存在/api/ route中,这有助于区分API控制器与同一网站中的其他非API。

操作用于映射到特定的HTTP谓词,例如,您通常会有一个返回所有实体的GET操作。此操作将响应/api/Products (其中'products'是您的控制器),看起来像这样:

 public IEnumerable<string> Get()
 {
     return new string[] { "value1", "value2" };
 }
 

您可能还有一个GET 操作,该操作接受特定ID 并返回特定实体。它会响应/api/Products/81 ,看起来像这样:

public string Get(int id)
 {
    return "value";
 }
 

使用Web API有很多隐藏的好处,您可能没有意识到,但实际上为您节省了大量的工作。

Web API2是'One Asp.Net'的一部分

Web API2是“One Asp.Net”系列的一部分,这意味着它本身支持您当前可能与MVC或Web表单一起使用的所有优秀共享功能,这包括(这些仅是几个示例):

  • 实体框架
  • 授权和身份
  • 脚手架
  • 路由

序列化和模型绑定

Web API2默认设置为以XML或JSON格式提供响应(默认为JSON)。但是,作为开发人员,您不需要进行任何转换或解析 - 您只需返回一个强类型对象,Web API2将其转换为XML或JSON并将其返回给调用客户端,这是一个名为Content Negotiation的过程。这是一个返回强类型Product对象的GET 操作的示例。

 public Product GetProduct(int id)
 {
    var product = _products.FirstOrDefault(p => p.ID == id);
    if (product == null)
    {
       throw new HttpResponseException(HttpStatusCode.NotFound);
    }
    return Request.CreateResponse(HttpStatusCode.OK, product);
 }
 

这也适用于使用称为模型验证的功能的传入请求。通过模型验证,Web API2能够验证传入的响应正文数据并将其解析为强类型对象,以便您在代码中使用。这是模型绑定的一个示例:

 public HttpResponseMessage Post(Product product)
 {
     if (ModelState.IsValid)
     {
         // Do something with the product (not shown).
 
         return new HttpResponseMessage(HttpStatusCode.OK);
     }
     else
     {
         return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
     }
 }