Windows10+vs 2017中创建WEB API教程

我们如果需要用到web api怎么办?一般来说可以自己开发和去使用别人开发好的api,今天我们来讲一下Windows10+vs 2017中创建web Api的教程。目前本教程当中的方法在Win10 + VS2017(MVC5)win server2016+vs2017,vs2013 vs2019当中测试通过,大家可以来看看学习一下。

本教程只是一个入门api开发创建教程,只适合基础的api开发和创建和使用,如果想使用更加稳定的api可以来api平台 看看。

1、建立 WebApi:

我们先打开vs 2017(别的版本也行,看具体情况,我这里测试了2013,2019都可以正常使用)选择菜单 “文件-》新建醒目-》web -》ASP.NET Web 应用程序”

Windows10+vs 2017中创建web Api教程插图

输入名称和位置,确定,进入模板选择页面。选择 WEB API 模板(选择Web API 时会添加对MVC 的支持)如果这里啥也没有,说明啥?说明你在安装vs开发软件的时候没安装那些需要的开发环境,所以会发现缺少很多东西,最好的办法是重新安装,安装的时候把所有的东西都安装一下。

Windows10+vs 2017中创建web Api教程插图1

2、添加ApiController

查看生产的目录结构,发现WebAPI 的结构和普通MVC程序结构是非常类似的。 默认VS会在Controllers 文件夹下创建一个示例控制器: ValuesController

  • 基本上都是这种结构Controllers
    • ValuesController.cs
  • Models
  • Views
    • Shared
      • _Layout.cshtml
  • App_Start
    • BundleConfig.cs
    • FilterConfig.cs
    • RouteConfig.cs
  • Global.asax
  • Content
    • css
    • images
    • js
  • Scripts
  • wwwroot
    • lib
    • views
  • Properties
    • AssemblyInfo.cs
  • App_Data
  • App_Code (可选)
  • Test (可选)
  • obj
  • bin

具体看下图知道了,结构非常相似

Windows10+vs 2017中创建web Api教程插图2

Windows10+vs 2017中创建web Api教程插图3

通过查看该控制器代码,发现WebAPI的控制器与MVC控制器的主要区别:

1)WebAPI控制器类继承自 ApiController 类

2)WebAPI 方法返回的是原始数据,而不是视图。

(1) 添加自己的控制器时,只需要在参照示例,在 Controllers 文件夹下,新建一个继承自 ApiController 的类 ApiController 在命名空间 System.Web.Http 下 控制器一般按约定以 Controller结尾,如:ActionController

3、Web API 中的路由和方法

我们可以在  App_Start 文件夹中的 WebApiConfig 文件内,查看并修改 WebAPI 的路由(当然还有别的其他配置)在该文件内,有一个默认路由配置

Windows10+vs 2017中创建web Api教程插图4

可以看出,WebAPI 路由与MVC理由非常类似,但也有有个明显的区别,在 Web API 路由中,没有 {action} 指令这是因为 Web API 默认操作以请求使用的HTTP动词来调度。

也是说,在控制器中有以常见 Http 动词(Get, Post, Put, Delete, Head, Patch, Options)开头的方法,这个方法可以匹配相应动词的请求。

例如,在 ValuesController 控制器中的 Get 方法

Windows10+vs 2017中创建web Api教程插图5

当客户端以 Get 方式请求到该控制器时,Web API 将自动匹配 Get 方法 。

对于名称不能匹配常见动词的方法,Web API 默认支持 post 请求,这时,需要在方法中使用 [Http…] 特性进行装饰。

如:

Windows10+vs 2017中创建web Api教程插图6

这个时候,默认的路由配置不适用了,需要在 WebApiConfig  文件添加自定义的路由配置(主要是添加 {action} 特性,以支持不匹配动词的方法)

Windows10+vs 2017中创建web Api教程插图7

这一步完成后,可以在本中调用该API方法了。调用方法和普通 MVC 方法调用一样。

之所以说可以在本调用,因为在其他调用时,属于跨域操作,还需要跨域调用设置,但是配置这个跨域设置费劲巴拉的,所以不太建议搞,建议还是直接搞

4、Web API  中跨域调用

要Web API 可以跨域调用,首先需要在中添加 Microsoft.AspNet.Cors 的引用。可以使用NuGet在中安装 Microsoft.AspNet.Cors

注: 在OWIN 中需要引用 的是 Microsoft.AspNet.WebApi.Cors

Windows10+vs 2017中创建web Api教程插图8

Microsoft.AspNet.Cors 安装成功后,需要在 WebApiConfig   文件中添加可跨域方法配置

最主要添加代码

config.EnableCors(new EnableCorsAttribute(“*”, “*”, “*”));

EnableCorsAttribute 在命名空间 System.Web.Http.Cors 中(在新安装 的  Microsoft.AspNet.Cors 内)

Windows10+vs 2017中创建web Api教程插图9

而其中的参数,表示对可跨域调用的方法的配置(这里全为 “*” 表示所有方法均可跨域调用)到处为止,Web API 创建、配置已经完成。

但是有的时候在跨域配置完成后,任然不能在其他进行跨域调用。这有可能是浏览器不支持的原因。目前ie浏览器是肯定不支持,火狐浏览器也不行,谷歌浏览器看起来还行。浏览器的支持程度可以参照下图(从网上扒拉过来的)

Windows10+vs 2017中创建web Api教程插图10

这个时候,需要在调用 API 的 JS 中设置对跨域的支持。

好在 JQuery 提供了简单的方法,只需要通过 JQ 设置 :jQuery.support.cors = true

Windows10+vs 2017中创建web Api教程插图11

上图中, jQuery.support.cors = true 表示设置浏览器对跨域调用的支持。ajax 方法即是调用 控制器 (图中是 IPAddress)中的 方法 (GetIp, 参数 为 0),可以看出调用方法与MVC 方法是一样的。

到这里其实已经弄完了,web api基本上搞好了,但是只是一个基础的api只能勉强用用,非常南坪,我建议还是去api平台看看,用哪些正儿八经的api,更适合开发和生产环境上使用。

作者:幻城

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1487807.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

PHP简单商城单商户小程序系统源码

🛍️轻松开店,触手可及!「简单商城小程序」让电商梦想照进现实🌟 🎉开店新风尚,「简单商城小程序」引领潮流! 还在为繁琐的电商开店流程烦恼吗?想要快速搭建自己的线上商城&#x…

vue3引入openlayers

安装ol包 OpenLayers作为 ol npm包提供,它提供了官方支持的API的所有模块。 官方地址:ol npm install ol模块和子模块约定 具有CamelCase名称的OpenLayers模块提供类作为默认导出,并且可能包含其他常量或函数作为命名导出: i…

得物App弱网诊断探索之路

一、背景 随着得物用户规模和业务复杂度不断提升,端上网络体验优化已逐步进入深水区。为了更好地保障处于弱网状态下得物App用户的使用体验,我们在已有的网络体验大盘、网络诊断工具的基础上研发了弱网诊断能力。该工具能够高效实时诊断用户真实网络环境…

c++初阶知识——string类详解

目录 前言: 1.标准库中的string类 1.1 auto和范围for auto 范围for 1.2 string类常用接口说明 1.string类对象的常见构造 1.3 string类对象的访问及遍历操作 1.4. string类对象的修改操作 1.5 string类非成员函数 2.string类的模拟实现 2.1 经典的string…

Jenkins+Gitlab持续集成综合实战

一、持续集成应用背景: DevOps:(英文Development(开发)和Operations(技术运营)的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程&#…

本地生活抽佣系统搭建:如何让系统具有竞争优势?

随着本地生活的潜力不断展现,本地生活服务商逐渐成为新兴职业中的一大热门,本地生活抽佣系统搭建的热度也一直保持着飙升的状态。 抖音生活发布的《2023年数据报告》显示,2023年,抖音生活服务平台总交易额增长256%,抖…

android13 Settings动态显示隐藏某一项

总纲 android13 rom 开发总纲说明 目录 1.前言 2.确定目标设置项 3.修改参考 3.1 方法1 3.2 方法2 4.编译测试 5.彩蛋 1.前言 在Android 13系统中,动态显示或隐藏Settings应用中的某一项通常涉及到对Settings应用的内部逻辑进行修改。由于Settings应用是一个系统应用…

涉及VPN、金融、健康服务等类型应用上架政策突变

大家好,我是牢鹅!今天为大家分享Google Play 2024年7月17日下发的政策更新,此次政策更新距上次(4月5日)政策大更新仅过去三个月。前段时间牢鹅跟谷歌的人有聊过,今年他们的目标很明确,提高开发者…

云计算复习--虚拟化技术

文章目录 虚拟化技术定义与原理虚拟机监视器(VMM)虚拟化技术服务器虚拟化存储虚拟化网络虚拟化应用虚拟化 关键技术新型虚拟化技术发展进展作业 虚拟化技术定义与原理 定义:虚拟化技术是一种将计算机物理实体(如服务器、存储设备…

ElasticSearch学习篇15_《检索技术核心20讲》进阶篇之TopK检索

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243,文档形式记录笔记。 相关问题: ES全文检索是如何进行相关性打分的?ES中计算相关性得分的时机?如何加速TopK检索?三种思路 精准To…

SAP如何获取程序变式

一:获取变式的值 二:相关的内容表 VARID:变式目录 VARIT:变式描述 VARI :变式内容

CanFestival对象字典编辑器Python3版本

CanFestival是一个CANOpen开源C库,其自带对象字典编辑器,但是得用Python2来打开,其界面库使用的也是老版本的wxPython,使用起来非常不方便。 本人复制了一份对象字典编辑器源码,然后经过辛苦的修改,终于可…

Pyqt5新手教程

PyQt界面开发的两种方式:可视化UI 编程式UI (1)可视化UI:基于Qt Designer可视化编辑工具进行组件拖放、属性设置、布局管理等操作创建界面。 一是将其保存为.ui文件,然后在PyQt应用程序中加载和使用.ui文件。 二是使用…

【监控软件】Zabbix

目录 重点提要 1. 常见监控软件 2. 常用的zabbix组件 3. 主动模式与被动模式原理 4. 主动模式与被动模式实现 5. 监测JAVA程序Tomcat 6. proxy架构 7. proxy的安装 8. proxy的主动被动实现 9. zabbix自定义模版 10. zabbix邮件通知 11. zabbix自愈(nginx为例) 12. …

EXCEL 排名(RANK,COUNTIFS)

1.单列排序 需求描述:如有下面表格,需要按笔试成绩整体排名。 解决步骤: 我们使用RANK函数即可实现单列整体排名。 Number 选择第一列。 Ref 选择这一整列(CtrlShift向下箭头、再按F4)。 "确定"即可计算…

Scikit-learn内置的数据集

数据集是我们学习和研究机器学习不可或缺的基础,Scikit-learn库内置了丰富的数据集资源,非常适合初学者用来练习和验证机器学习算法的效果。 一、鸢尾花数据集 鸢尾花数据集(Iris Dataset)是机器学习领域中最著名的数据集之一&am…

论文解读 | ICML2024:突破Transformer上下文学习中的瓶颈

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者简介 付靖文,西安交通大学博士生 简介 上下文学习,即从上下文示例中学习,是Transformer一项令人印象深刻的能力。然而,由于学习瓶颈的出现——在训练过程中模…

【Java题解】以二进制加法的方式来计算两个内容为二进制数字的字符串相加的结果

🎉欢迎大家收看,请多多支持🌹 🥰关注小哇,和我一起成长🚀个人主页🚀 👑目录 分析:🚀 数字层面分析⭐ 字符串层面分析⭐ 代码及运行结果分析:&#x1f6…

对语言大模型的现状总结与趋势

ChatGPT与LLM技术现状 LLM的主要手段 模型:Transformer拥有强大的表示能力,能对具有组合性(compositinality)的语言进行很好的表示和学习。 预训练(pre-training):使用大规模文本数据进行语言建模(langu…

浅谈监听器之后端监听器

浅谈监听器之后端监听器 “后端监听器”(Backend Listener)是一种高级功能,用于异步地将测试结果数据发送至外部系统,如数据库、消息队列或时间序列数据库等,以便于长期存储、实时分析和可视化展示。 后端监听器的作…