|
主题设置

卡片式面板通常用于非白色背景色的主体内

创建 Web API

Web API 通常基于 HTTP 协议,并且可以被各种客户端(如 Web 应用程序、移动应用程序等)调用。

创建 WEB API

打开 Visual Studio,创建新项目

选择 “应用类型、平台、语言”,选择 “ASP.NET Web 应用程序(.NET Framework)”,点击 “下一步”

填写 “项目名称” 和 “解决方案名称”,然后 “创建”

创建 WEB API 应用程序

创建成功

解析 WEB API

项目创建完成之后,APP_Start 文件夹下的 WebApiConfig.cs 类,和 Controllers 文件夹下的 ValuesController.cs,是两个关健文件。

下面对这两个文件做简单解析。

WebApiConfig.cs 解析

WebApiConfig.cs 类里面的 Register 方法用于注册一个 WebAPI,并且会返回 HttpConfiguration 类型的一个变量 config,通过这个变量可以设置 HTTP 访问的路由。

如果需要对 API 的访问路径进行设置,可在 routeTemplate 属性中中进行修改。

文件的调用顺序:WebApiConfig.cs 类里的 Register 方法,是在 Global.asax 里被调用的,而 Global.asax 是在网站启动的时候被调用。

ValuesController.cs解析

ValuesController.cs 文件对外提供可访问的 API

由于在 WebApiConfig.cs 中定义 HTTP 访问路由时,采用了这个设置:routeTemplate: "api/{controller}/{id}",缺少了 /{action},就导致调用 API 时,只能根据 API 的方法名判断是 GET 或 POST 方式,并且方法名不能拼接上其他字符,所以参数一样的 GET 或 POST 方法只能有一个。

  • GET
    1. 比如在 ValuesController.cs 中,Get(int id) 方法只能有一个,不能再定义 Get(int id2),因为这两个从方法名上都被判断为 GET,且参数一致。
    2. 但是可以同时存在 Get(),或者 Get(int id),因为它们的参数不一样。
  • POST
    1. 与 GET 不同,如果是 POST 的调用方式,且指定了 [FromBody],就不能同时存在 Post()、或者 Post([FromBody] string value),尽管它们参数不同。
    2. 因为由于 [FromBody] 的存在,是允许 string value 不被赋值的,这时候就相当于 Post()。

要解决这个问题,需要将 WebApiConfig.cs 对路由的设置改为:routeTemplate: "api/{controller}/{action}/{id}"

如果不需要 API 链接中有 “api” 字符串,可将 WebApiConfig.cs 改为:routeTemplate: "{controller}/{action}/{id}"

调用 WEB API

启动 WebAPI 程序

调用 API