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.mzph.cn/pingmian/49846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网安人必须人手一份的《Linux私房教程》,GitHub星标286K!

Linux是一套免费使用和自由传播的操作系统内核,是一个基于POSIX和Unix的多用户、多任务支持多线程和多CPU的操作系统内核。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳…

【iOS】GCD

参考文章:GCD函数和队列原理探索 之前写项目的时候,进行耗时的网络请求使用GCD处理过异步请求,但对一些概念都很模糊,这次就来系统学习一下GCD相关 相关概念 什么是GCD? Grand Center Dispatch简称GCD,是…

ChatTTS真人文本转语音模型,富有韵律与情感,且免费开源

上期图文教程,我们分享了微软TTS真人转语音大模型,但是微软的TTS模型只有针对新用户免费一年,其他用户都是收费的,虽然微软开源了部分TTS的功能,但是针对真人类似的富有情感的TTS模型并没有进行开源,本期介…

软件测试基础1--功能测试

1、什么是软件测试? 软件是控制计算机硬件运行的工具。 软件测试:使用技术手段验证软件是否满足使用需求,为了发现软件功能和需求不相符合的地方,或者寻找实际输出和预期输出之间的差异。 软件测试的目的:减少软件缺陷…

学习笔记之JAVA篇(0724)

p 方法 方法声明格式: [修饰符1 修饰符2 ...] 返回值类型 方法名(形式参数列表){ java语句;......; } 方法调用方式 普通方法对象.方法名(实参列表)静态方法类名.方法名(实参列表) 方法的详…

【YashanDB知识库】YashanDB的JDBC/OCI驱动如何设置字符编码

问题现象 Oracle、Mysql数据库链接串,JDBC驱动连接串可以指定客户端的编码格式: jdbc:mysql://hostname:port/database_name?useUnicodetrue&characterEncodingutf8mb4 jdbc:oracle:thin://hostname:port/service_name?NLS_LANGUAGEAMERICAN&am…

【SQL语句大全(MySQL)】

SQL语法 添加删除修改查询基本查询条件查询分组函数/聚合函数分组查询排序分页查询(限制查询)多表查询连接查询根据年代分类连接查询根据连接方式分类1、内连接2、左外连接3、右外连接 多张表连接的语法格式 嵌套查询 SQL语句书写顺序 添加 INSERT INTO…

构建生成工具cmake的使用(1)

ps:本文是对cmake的基础讲解,掌握后解决70-80%情况是足以应对的,后续会对cmake有进阶内容。 一 前言 CMake 是一个工具,帮助开发者管理和自动化软件项目的构建过程。它使用一个叫做CMakeLists.txt 的文本文件来描述项目的组织结构、编译选项…

h5图片压缩后变为base64格式的流地址上传服务器

**操作逻辑&#xff1a;前端把图片压缩变为base64格式的流地址&#xff0c;然后把base64格式的流地址传输到后端进行上传到cos服务器 操作流程** 1.前端&#xff1a;我这里是通过uniapp开发h5的&#xff0c;upLoadPutBase64是封装好的上传后端服务器的接口 div写上 <helan…

oracle数据库下的定时任务,如何创建Jobs

oarcle中写存储过程&#xff0c;上面的文章中已经介绍过了&#xff0c;这次是写好存储过程后&#xff0c;在Jobs文件夹中新建job,达到定时执行任务的目的。 1、在plsql数据库中&#xff0c;找到左边的Jobs,右键点击新建&#xff0c;如下图&#xff1a; 2、按照下图将相应的项添…

【Gitlab】SSH配置和克隆仓库

生成SSH Key ssh-keygen -t rsa -b 4096 私钥文件: id_rsa 公钥文件:id_rsa.pub 复制生成的ssh公钥到此处 克隆仓库 git clone repo-address 需要进行推送和同步来更新本地和服务器的文件 推送更新内容 git push <remote><branch> 拉取更新内容 git pull &…

探索 IT 新边疆:元宇宙的无限可能与挑战

目录 元宇宙的基本概念 元宇宙的无限可能 元宇宙与艺术创作 元宇宙中的社交互动 不同文化在元宇宙中的融合与冲突 文化的融合&#xff1a;元宇宙的桥梁作用 文化的冲突&#xff1a;价值观与认同的碰撞 应对策略&#xff1a;促进融合&#xff0c;化解冲突 元宇宙面临的…

LINUX高性能服务器框架

1.服务器模型&#xff1a; 1). C/S模型 &#xff1a; 此模型就是一个服务器能给多个客户端提供服务&#xff0c;但所以资源都被服务端所占有&#xff0c;客户端想要获取只能通过请求连接服务端去获取。由于客户端的请求访问是异步的&#xff0c;所以需要一个手段进行此类事件的…

android user 版本如何手动触发dump

项目需要在android user版本增加手动触发dump方法&#xff0c;用以确认user版本发生dump后系统是重启还是真正发生dump卡机&#xff01; 本文以qcom平台项目为例描述所做的修改&#xff0c;留下足迹以备后忘。 闲言少叙&#xff0c;开整上干货&#xff1a; 一、修改bin文件 …

Typescript学习笔记(2.0)

ts编译选项 tsc app.ts -w 参数-w&#xff0c;就是对app.ts进行监视&#xff0c;每次该文件改变时就会自动编译 **:任意目录 *&#xff1a;任意文件 接口 接口用来定义一个类结构&#xff0c;用来定义一个类中应该包含哪些属性和方法&#xff0c;同时接口也可以当做类型…

Profinet与以太网Ethernet的区别

在工业自动化和网络通信领域&#xff0c;Profinet和以太网Ethernet是两种常见的通信协议。尽管它们都基于以太网技术&#xff0c;但在技术规范、应用领域、通信速度和实时性、系统兼容性和互操作性以及数据处理和网络管理等方面存在显著差异。 一、技术规范和应用领域 以太网 …

爬虫基础之Web网页基础

在探讨爬虫技术的深入应用之前&#xff0c;了解Web网页的基础知识是至关重要的。Web网页是互联网上的基本构成单元&#xff0c;而爬虫则是与这些网页交互的自动化程序。本文将介绍Web网页的基础知识&#xff0c;包括HTML、CSS、JavaScript以及它们在爬虫技术中的角色。 HTML&a…

基于微信小程序的课堂考勤系统的设计与实现(论文+源码)_kaic

基于微信小程序的课堂考勤系统的设计与实现 摘 要 在高校教育普及的今天&#xff0c;学生人数日益增多&#xff0c;为保证课堂质量&#xff0c;教师多要在课前进行考勤。因此本设计提出基于微信小程序的课堂考勤系统&#xff0c;增加了定位功能&#xff0c;避免了“假打卡”…

前端开发知识(一)-html

1.前端开发需掌握的内容&#xff1a; 2.前端开发的三剑客&#xff1a;html、css、javascript Vue可以简化JavaScpript流程。 Element&#xff08;饿了么开发的&#xff09; &#xff1a;前端组件库。 Ngix&#xff1a;前端服务器。 3.前端开发工具&#xff1a;vscode 1)按…

基于Java+SpringBoot+Vue的学生心理咨询评估系统

前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 哈喽兄弟们&#xff0c;好久不见哦&#xff5…