C# webapi接口调用实例
后台-插件-广告管理-内容页头部广告(手机) |
目录
- 源码
- 测试目标
- 请求数据
- 响应数据
- webapi接口项目部分
- dll类库项目部分
- 番外篇
- 修改路由格式
- 添加Swagger
书接上回C# WebService&WebApi接口项目创建,在demo的基础上进行webapi接口调用实例开发。
源码
WebApi接口项目public分支https://gitee.com/xiuhuang/webapi_demo
进行接口调用的类库项目public分支https://gitee.com/xiuhuang/dll_demo
下文中提到的所有修改都可以在gitee上看到与demo的修改处直观对比,并且复制更方便,因此只贴图片不贴代码。
测试目标
首先分析接口的请求数据格式和响应数据格式要求。
请求数据
格式为json
测试生成请求数据:{“a”:4,“b”:2}
响应数据
格式为json,包含Success、Code、Message、Result
编号 | 名称 | 类型 | 描述 |
---|---|---|---|
1 | Code | String | 结果编码,成功为200,失败是201 |
2 | Success | Boolean | 是否成功,成功是true,失败是false |
3 | Message | String | 返回消息 |
4 | Result | String | 数据结果,有返回数据结果,存储在Result中 |
测试生成响应数据:{“Code”:“200”,“Success”:true,“Message”:“PostTest”,“Result”:“6”}
webapi接口项目部分
1.首先返回的数据为json格式,而demo项目生成后默认是返回xml格式,因此需要修改App_Start目录下的App_Start/WebApiConfig.cs文件如图所示。
2.然后创建响应数据的实体类Data,请求数据的实体类Test。
3.修改Controllers/ValuesController.cs里API路径为api/Values的POST请求接口如图所示。
注意:Body只接收一个参数的传递,想要在Body中传递多个参数,需要将这多个参数封装成一个对象。
4.此时就可以用postman验证接口的效果了,如图所示。
dll类库项目部分
0.新建一个类库项目,如图在搜索框输入类库,选择类库(.NET Framework),点下一步即可生成一个初始类库项目。
注意:一般会把接口调用方法所在的类生成dll文件来减少耦合,且通过引用dll文件的方式可以在多个项目复用,因此这里为了模拟选择了类库项目。
1.将上面的响应数据的实体类Data和请求数据的实体类Test复制到项目中。
2.使用Nuget添加引用Newtonsoft.Json。
3.编写将对象转换为json字符串和将json字符串转换为指定类型对象的工具类JsonHandler。
4.编写处理HTTP请求的工具类HttpHandler。
5.编写一个测试类Class1,其中写测试方法show3。
6.将生成的dll类库项目引入其他项目,输出的结果如下图所示。(此处我生成了一个winform应用程序作为测试,直接写到main函数里)
番外篇
修改路由格式
1.修改webapi接口项目部分第1步中的App_Start目录下的App_Start/WebApiConfig.cs文件,如图所示。
2.这样修改路由格式设置后,webapi接口项目部分第4步例子中的路由地址由/api/Values改成了/api/Values/Post,如下图所示。
添加Swagger
1、webapi接口项目使用Nuget添加引用Swashbuckle。
2.项目右键点击属性,选择生成,勾选XML文档文件。
3.修改App_Start目录下的App_Start/SwaggerConfig.cs文件,如图所示,代码如下。
var webApiXmlPath = string.Format("{0}/bin/上一步中的XML文档文件名.xml", System.AppDomain.CurrentDomain.BaseDirectory); c.IncludeXmlComments(webApiXmlPath);- 1
- 2
4.运行之后在地址后面加上/swagger即可访问swagger页面。
如例子中的地址为http://localhost:49792,则swagger页面为http://localhost:49792/swagger。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |