为更好更快速的上手Webapi设计模式的接口开发,本文详细解释了在Web API接口的开发过程中,我们可能会碰到各种各样的问题总结了这篇,希望对大家有所帮助。

1:在接口定义中确定MVC的get或者POST方式

由于我们整个Web API平台是基于MVC的基础上进行的API开发,因此整个Web API的接口,在定义的时候,一般需要显示来声明接口是[HttpGet]或者[HttpPost],虽然有些接口也可以不用声明,但是避免出现类似下面的错误信息,显式声明还是有好处的。

如下代码片段依次展示

HttpGet

=============================================================================

/// <summary>
        /// 查询数据库,检查是否存在指定ID的对象
        /// </summary>
        /// <param name="id">对象的ID值</param>
        /// <returns>存在则返回指定的对象,否则返回Null</returns>[HttpGet]
        public virtual T FindByID(string id, string token)

================================================

HttpPost:

        /// <summary>
        /// 插入指定对象到数据库中
        /// </summary>
        /// <param name="info">指定的对象</param>
        /// <returns>执行操作是否成功。</returns>[HttpPost]
        public virtual CommonResult Insert(T info, string token, string signature, string timestamp, string nonce, string appid)

================================================

2:动态对象的接口定义

在一般的Web API接口里面,我们可能都会碰到很多简单类型的参数,但是又想让它们以POST方式提交数据,那么我们就可以有两种方法来处理,一种是定义一个类来放置这些参数,一种是采用动态的JObject参数,前者有很多不方便的地方,因为我们不可能为每个接口参数定义多一个实体类,这样可能会有很多难以管理的类定义。如下面是微信API的调用接口案例,我们也需要设置这样的处理规则。

如下图代码片段示例:

//接口调用请求说明
//http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN
POST数据格式:jsonPOST数据例子:{"group":{"id":108,"name":"test2_modify2"}}

看完以上简单的示例代码描述解释,应该对WebApi有一定初步了解,接下来我们就要通过简单示例程序来了解下。

1:如下图新建web项目

2:选择webapi设计模板

3: 点击确定后,VS会自动为我们创建一个完整的可运行的ASP.NET Web API的项目。

从项目的目录结构可以看出,ASP.NET Web API与ASP.NET MVC项目的结构几乎一致。我们删除为我们默认创建并打开的ValuesController文件(示例性文件,可以参考)。

既然要打造一个IP地址查询服务接口,为了跟上文的服务形式一致,我们还是使用GET请求方式的服务,不过我们这次使用MVC中的Web API来实现。

首先在Models文件夹中建立一个Address模型类。

4:注意(在这里我重要强调下,在了解webapi之前要对

MVC设计模式要有一定的基础

在这里我简单介绍下生成的MVC 设计结构:如下解释

MVC是模型(model)、视图(view)、控制(controller)这三个单词上的首字母组成。它是一种目前广泛流行的应用模型,它的目的是实现Web系统的职能分工。(如下图解释模型分工层)

设计模式的优点:

MVC的处理过程是这样的:对于每一个用户输入的请求,首先被控制器接收,控制器决定用哪个模型来进行处理,然后模型通过业务逻辑层处理用户的请求并返回数据,最后控制器确定用哪个视图模型,用相应的视图格式化模型返回数据,并通过显示页面呈现给用户。

通过MVC这种特殊的设计结构,大大提高了Web应用的开发效率。

Ok我们继续继续开工,当生成好后我们架构,要打造一个IP地址查询服务接口,为了跟上文的服务形式一致,我们还是使用GET请求方式的服务,不过我们这次使用MVC中的Web API来实现。

首先在Models文件夹中建立一个Address模型类(模型对象,属性类)如下图添加地址类

在模型类里面添加我们需要的属性参数:如下代码片段

public class Address

{

//以下三个属于模型类属性==【高峰2017-11-17】

/// <summary>

/// 城市IP段

/// </summary>

public string IPAddress { get; set; }

/// <summary>

/// 省份

/// </summary>

public string Province { get; set; }

/// <summary>

/// 城市

/// </summary>

public string City { get; set; }

}

接着我们在Controllers文件夹下建立一个IPAddressController控制器,需要注意的是,这个IPAddressController一定要继承自ApiController类,这样服务才能暴露出来。

如下图展示注意:绿色注释解析

Ok,只要做上面两步就可以运行这个项目了,我们按Ctrl+F5运行整个项目,出现了如下的页面,点击API跳转进入API接口列

我们所写的地址接口:

最后界面展示出来我们需要的三个参数支持application/json, text/json

实例:如下

{
  "IPAddress": "sample string 1",
  "Province": "sample string 2",
  "City": "sample string 3"
}

Ok当我们测试运行没有问情况下需要验证,我们实现的功能:验证有两种方式,一种是直接发布出来,挂载到IIS web服务器上,第二种是

通过第三方插件工具提送开发环境下的测试。此次我们两种都介绍,如下第一种发布挂载到IIS上,ok,废话不多,搞起!!!!

第一:如下图选中项目,选择发布

接下来选择配置文件中的自定义文件,起一个霸气的名字,然后我们下一步如图所示

在Publish method路径选择file System,然后在以下中选择自己定义好的物资位置如下图:

我们继续下一步,如下图:

继续点击下一步:如下图

点击部发布后如下图VS控制台提示:

当出现以上图片显示就说明我们发布成功了,接下来我们就可以发布到IIS上了如下图一步步看图。

1:发布准备文件

2:发布到IIS上

3:然后选中上图红色标识看效果如下图开始测试

Ok,自动这里我们已经发布出来成功的挂在了IIS上,可提供给第三方使用,后面有需要具体流程业务,可以自己在添加流程。

第二:选择第三方插件在开发环境下进行测试

WebApi接口测试工具:WebApiTestClient在便器工具更新下找到该工具

安装WebApiTestClient即可。

Ok,到这里我们这部分webapi接口简单实例就已经完成,下面我将盖实例程序上传到文档供大家参考,修订!!!!

webapi_test为简单实例、HBTechPlatformHis包为整合实体项目案例

C#版ASP.NET Web API使用示例的更多相关文章

  1. ASP.NET Web API 开篇示例介绍

    ASP.NET Web API 开篇示例介绍 ASP.NET Web API 对于我这个初学者来说ASP.NET Web API这个框架很陌生又熟悉着. 陌生的是ASP.NET Web API是一个全 ...

  2. 旅图beta版 asp.net web api 单元测试

    旅图 beta版 asp.net web api 单元测试 测试接口:http://120.27.7.115:1010/Help 测试目的 对每个接口单元进行测试,保证每个接口的可靠性. 单元描述 注 ...

  3. ASP.NET Web API 入门示例详解

    REST服务已经成为最新的服务端开发趋势,ASP.NET Web API即为.NET平台的一种轻量级REST架构. ASP.NET Web API直接借鉴了ASP.NET MVC的设计,两者具有非常类 ...

  4. ASP.NET Web API使用示例

    原文地址:https://blog.csdn.net/chinacsharper/article/details/21333311 上篇博客讲解rest服务开发时,曾经提到过asp.net mvc中的 ...

  5. ASP.net Web API综合示例

    目录 概述 功能介绍 程序结构 服务器端介绍 客户端介绍 “契约” Web API设计规则 并行写入冲突与时间戳 身份验证详解 Web API验证规则 客户端MVVM简介 Web.Config 本DE ...

  6. 支持Ajax跨域访问ASP.NET Web Api 2(Cors)的简单示例教程演示

    随着深入使用ASP.NET Web Api,我们可能会在项目中考虑将前端的业务分得更细.比如前端项目使用Angularjs的框架来做UI,而数据则由另一个Web Api 的网站项目来支撑.注意,这里是 ...

  7. Asp.Net Web Api 2 实现多文件打包并下载文件示例源码_转

    一篇关于Asp.Net Web Api下载文件的文章,之前我也写过类似的文章,请见:<ASP.NET(C#) Web Api通过文件流下载文件到本地实例>本文以这篇文章的基础,提供了Byt ...

  8. ASP.NET MVC Web API使用示例

    上篇博客讲解rest服务开发时,曾经提到过asp.net mvc中的rest api,由于篇幅原因,没有在上篇博客中进行讲解,这里专门拿出来进行讨论.还是一样引用上次的案例,用asp.net mvc提 ...

  9. 在ASP.NET Web API 2中使用Owin OAuth 刷新令牌(示例代码)

    在上篇文章介绍了Web Api中使用令牌进行授权的后端实现方法,基于WebApi2和OWIN OAuth实现了获取access token,使用token访问需授权的资源信息.本文将介绍在Web Ap ...

随机推荐

  1. mysql生成主键

    在mysql中,可以使用uuid 来生成主键,但是用mysql的uuid()函数 ,生成的uuid是36位的,其中包含32个字符以及4个分隔符(-), 往往这个分隔符对我们来说是没有用的,可以使用my ...

  2. yolo进化史之yolov3

    yolov3的论文写的比较简略,不看yolov1,yolov2很难直接看懂. 建议先看v1,v2论文. yolov3主要做了几点改进 改进了特征提取部分的网络结构 多尺度预测 分类由softmax改为 ...

  3. Mysql高手系列 - 第12篇:子查询详解

    这是Mysql系列第12篇. 环境:mysql5.7.25,cmd命令中进行演示. 本章节非常重要. 子查询 出现在select语句中的select语句,称为子查询或内查询. 外部的select查询语 ...

  4. ASP.NET Core 3.0 gRPC 双向流

    目录 ASP.NET Core 3.0 使用gRPC ASP.NET Core 3.0 gRPC 双向流 ASP.NET Core 3.0 gRPC 认证授权 一.前言 在前一文 <ASP.NE ...

  5. sql server 中常用修改列 ,创建主外键操作

    表结构 CREATE TABLE [staff] ( [id] [varchar](50) NOT NUL L, [name] [varchar](50) NOT NULL, [password] [ ...

  6. 深入全面理解面向对象的 JavaScript

    深入全面理解面向对象的 JavaScript (原著: 曾 滢, 软件工程师, IBM,2013 年 4 月 17 日) JavaScript 函数式脚本语言特性以及其看似随意的编写风格,导致长期以来 ...

  7. JSR303 后端校验包的使用

    1.首先通过Maven导入JSR303架包. <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate- ...

  8. js初学总结

    基础 交换变量方式 //利用第三方变量进行交换 var num1 = 10; var num2 = 20; var temp; temp = num1; num1 = num2; num2 = tem ...

  9. 阿里云服务器CentOS6.9 tomcat配置https安全访问

    应用场景 上线微信小程序的时候,域名要求https安全格式,否则获取数据异常. 第一步.SSL证书获取 获取SSL证书方式很多种,包括网页生成.工具生成等,这里我使用阿里云平台获取免费ssl证书的方法 ...

  10. Golang 接口与反射知识要点

    目录 Golang 接口与反射知识要点 1. 接口类型变量 2. 类型断言 3. 鸭子类型 4. 反射机制 5. reflect 包 TypeOf().ValueOf() Type().Kind() ...