WebAPI简介

article/2025/9/1 13:46:45

1、WebAPI概述

为什么要使用WebAPI:

Web API最重要的是可以构建面向各种客户端的服务。

 ASP.NET WebAPI是什么:

官方定义如下,强调两个关键点,即可以对接各种客户端(浏览器,移动设备),构建http服务的框架。

NET Web API是一个框架,它使构建HTTP服务变得容易,这些服务可以到达广泛的客户端,包括浏览器和移动设备。

NET Web API是在.NET框架上构建RESTful应用程序的理想平台。 与.NET4.5同时发布,并且支持.NET4.0

常见Web服务的区别:

 

2、HTTP协议

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

基于 TCP/IP 协议的应用层协议

HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。

通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。

HTTP 协议采用明文传输数据,这种方式并不安全,所以后来设计了 HTTPS 协议

统一资源定位符(URL)

统一资源定位符(URL)代表网络上一个特定的资源

对于一个 URL,如 http://www.xxx.com/images/logo.png,

https://search.jd.com/Search?keyword=电脑#top

它由以下几个部分组成:

1.http://,这一部分是 URL 协议,指明了如何访问一个特定的资源

2.www.xxx.com,这一部分是主机名,告诉浏览器所要访问资源所在的服务器名称 /images/logo.png,这一部分是 URL 路径,它指向服务器上具体的资源

3.端口号,在主机后面,以冒号隔开,这一部分通常省略,服务器在这个端口上监听 HTTP 请求 查询字符串,URL 中 “?” 后面的参数部分

4.锚部分,也称片段,在 “#” 后面的内容,用于指明一个资源的特定的位置

HTTP工作原理:

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

 基于请求-响应的模式:

 HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应

无状态保存:

HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议 自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个 级别,协议对于发送过的请求或响应都不做持久化处理。

 浏览器监视HTTP请求:

在浏览器中通过F12开发人员工具来监视HTTP请求

HTTP请求报文: 

 HTTP响应报文:

HTTP请求方法: 

HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:

1.GET   请求指定的页面信息,并返回实体主体。

2.HEAD  类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头

3.POST  向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

4.PUT  从客户端向服务器传送的数据取代指定的文档的内容。

5.DELETE  请求服务器删除指定的页面。

6.OPTIONS  允许客户端查看服务器的性能。

7.CONNECT  HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

8.TRACE  回显服务器收到的请求,主要用于测试或诊断。

9.PATCH  是对 PUT 方法的补充,用来对已知资源进行局部更新 。

HTTP状态码:

3、创建WebAPI

创建完WebAPI项目后,默认有一个API,我们可以先运行它来看一下WebAPI的庐山真面目

 

WebAPI默认返回XML格式的数据,实现开发中使用JSON格式居多我们该怎么办?

内容协商:

HTTP规范将内容协商定义为“当有多个格式可用时为给定响应选择最佳格式的过程”。

HTTP中内容协商的主要机制是这些请求标头:

Accept:响应可接受哪些媒体类型,例如“application / json”

Accept-Charset:可接受哪些字符集,例如UTF-8或ISO 8859-1。

Accept-Encoding:可接受哪些内容编码,例如gzip。

Accept-Language:首选的自然语言,例如“en-us”。

接下来通过一个小Demo演示向WebAPI发送Ajax请求分别响应XML格式的数据和Json格式的数据……

返回XML格式 :

返回JSON格式: 

除采用内容协商的方式之外,我们可以在Global中进行全局配置,来实现我们的WebAPI只返回Json数据格式

 FromBody:

Post请求的基础类型的参数和Get请求有点不一样,我们知道Get请求的参数是通过Url来传递的,而Post请求则是通过HTTP的请求体中传过来的。

WebApi程序可在方法参数前加[FromBody]标识,表示该参数值应该从请求的Body中获取,而不是从URL中获取。

被标记为[FromBody]的参数只允许出现一次 

路由规则:

 重要: WebAPI的路由默认规则和MVC不一样,在WebApiConfig 中,没有{action},所以不根据Url区分方法,而是根据请求方式和参数来对应方法。

特性路由:

特性路由是指将RouteAttribute或自定义继承自RouteAttribute的特性类标记在控制器或Action上,同时指定路由Url字符串,从而实现路由映射。

1.基本路由映射

 

2.路由映射到参数 

 

Web API和MVC的主要区别: 

命名空间不同MVC返回View或者data,

Web API用来创建服务,返回data Web API支持格式协商,客户端可以通过Header通知服务器需要的格式,MVC只能通过JsonResult返回Json数据

WebAPI 请求使用http动词映射,MVC使用ActionName

        MVC:System.Web.Mvc

        Web API:System.Web.Http

Views对于WebAPI来说没有太大的用途。因为Asp.Net WebAPI适用于那些需要使用数据服务,而非HTML标签的场景。

 

 


http://chatgpt.dhexx.cn/article/IpBVaA49.shtml

相关文章

深度解读互联网新时代:Web3.0

文章目录 深度解读互联网新时代——Web3.0一、Web3 —— 中心化网络的新兴名词二、Web3 “全家福”三、Web3 是互联网的货币层四、Web3 是互联网的身份层五、Web3 通过售卖数据来牟利的反击六、Web3 还拥有平台本身的一种方式七、Web3 是一种新的互联网赞助模式八、Web3 让建立…

使用Docker部署web项目

1、简介 本片文章主要介绍如何使用docker部署web项目。关于docker的安装及基本使用在笔者的另一篇文章中有相关的介绍。 链接 https://blog.csdn.net/H_porridge/article/details/123609120 2.准备一个web项目 自己有项目的可以用自己项目来部署,笔者此处也有一个…

CTFshow web17

萌新计划 进入题目,是一行php代码,发现c传参过滤掉了php,尝试一下日志文件包含漏洞 nginx的日志文件位置是/var/log/nginx/access.log 发现日志文件记录了User-Agent 那么我们就在User-Agent中写入一句话木马 上传成功,接下来我…

【计算机网络】Web服务器的配置

目录 课题描述 需求分析 2.1 WEB服务器基本构架 2.1.1 WEB服务器和浏览器 2.2 HTTP协议 2.2.1 HTTP简介 2.2.2 HTTP工作原理 2.3 FTP协议 2.3.1 FTP简介 2.3.2 FTP工作原理 2.4 ISS服务作用 概要设计 3.1 ISS服务器的安装与配置 3.2 详细设计 结果分析 4.1 We…

Zabbix web 监控

Zabbix web 监控 1、介绍 1、 Web 监控 监控指定的站点的资源下载速度,及页面响应时间,还有响应代码; 1、术语 web Scenario: web场景(站点) web page :web页面,一个场景有多个…

eclipse创建web项目

web创建 创建web项目错误解决方法如何设置Apache服务器 创建web项目 步骤1:创建Dynamic Web Project–动态web项目。 打开eclipse,在工具栏选在New–>Dynamic Web Project 在打开的Dynamic Web Project窗口,输入项目名。选择tomcat&…

idea部署web项目

资料来源 1.Idea 2020.2 创建web、Spring项目 2.idea部署web项目 3.IDEA 配置并运行tomcat 4.[IDEA:“Web”Facet resources are not included in an artifact] 5.【错误解决】Intellj(IDEA) warning no artifacts configured 1.idea中如何创建项目…

ctfshow-WEB-web7

ctf.show WEB模块第7关是一个SQL注入漏洞,注入点是数值型注入,源码中过滤了空格,我们可以使用括号()或者注释/**/来代替空格 页面中有一个文章列表,随便点一个 从url地址栏中可以看到,页面通过文章的id值来查询文章内容,我们可以考虑SQL注入漏洞 首先判断注入点,输入以下payloa…

Web是什么意思

Web是什么意思?可能大家经常听说Web这个词,却不知道它的真正含义,更不了解Web能用来干什么。那么今天我将为大家讲解一下Web的意思,以及学习Web到底有没有前景。 1、Web是什么意思 Web是什么意思?其实这是World Wide …

flutter开发web项目

Flutter Web在美团外卖的实践 - 掘金 让项目支持web :flutter create . 运行:flutter run -d chrome 运行指定渲染方式:flutter run --web-renderer html -d chrome 打包:flutter build web --release --web-renderer html 官…

1 使用Web2Py框架搭建网站

更多文章请关注: https://eightplus.github.io/ IDE:PyCharm 1、创建web2py项目 在下图左侧选中Web2Py,在右侧填写项目路径和应用名称,我这里是第一次创建,所以直接点击"Create"创建项目,此时…

通俗易懂web3.0

目录 前言一、WEB1.0二、WEB2.0三、WEB3.0区别最后 前言 大家好,我是清风。互联网连接了人与人,在过去的30年中,互联网技术不断进化、演化,向纵深发展,政治、经济、社交、生活、工作已经几乎离不开互联网。我们经历了…

ctfshow-WEB-web2

ctf.show WEB模块第2关是一个SQL注入漏洞,请求方式是POST请求,注入点是单引号字符型注入,flag就藏在当前的数据库的flag表中,使用联合注入获取数据即可 在用户名的输入框中输入万能账号 a or true #,密码随便输 登录成功,万能账号生效了,并且把查询到的用户名显示到了页面中,既…

Web3和Web2有什么区别?为什么Web3是未来?(以“以太坊”为例解读)

Web3和Web2有什么区别?为什么Web3是未来? 最近,Web3的概念十分火爆,下面这张图也是很有趣的描述了Web的一些特质,在社交软件内广为流传,那Web3到底是什么呢? Web2 是指我们大家今天都知道的互联…

Web2与Web3开发的不同之处

Web2是引入交互功能的第二代互联网,也是我们今天所熟悉的。随着Web的不断发展,第三代互联网,也被称为Web3,正处于积极开发中。Web3引入了在区块链上运行的去中心化和无需许可的系统。但是Web2和Web3开发之间有什么区别呢&#xff…

软件项目管理:外包 outsourcing、采购 procurement、合同 contracts

文章目录 外包不同类型为什么选择外包好处坏处 采购 procurementplanning 阶段-弄清需求 & 市场 / 评估风险Source 阶段-确定供应商具体过程RFxState of Work (SOW)评估步骤 Evaluation process Manage 阶段 Contract 合同定义种类固定价格合同适用场景(保守&am…

互联网中---外包的含义

外包,在我们这个行业是一个很常见的名词,对应着一个特殊的工种。 但是我发现很多朋友好像妖魔化了外包,觉得这玩意就是一个“坑”。 但是这个问题吧,得去辩证的看。很多人一提到“外包”就是非常的消极,觉得这个人大…

到底要不要去外包公司?这篇带你全面了解外包那些坑!

点击关注公众号,实用技术文章及时了解 转自:程序员小谭, 作者:谭叔 要不要去外包公司外包公司坑不坑我应聘上了某自研公司和某外包公司,该去哪一个 虽然我没在外包公司工作过,但根据行内评价和一些朋友的经…

外包项目注意事项问题

2019独角兽企业重金招聘Python工程师标准>>> 随着信息化的逐步深入,无论是企业、政府还是个人,对软件的依赖已经到了必不可少的地步。现在有越来越多的人认识到了软件在日常经营管理中的重要作用,因此外包的软件项目也在不断增长。…

银行项目外包专题系列之一:经常遇到的外包/驻场/实施/To B/POC这些概念

最近发现很多未毕业的学生或者已经毕业的同学在银行项目工作或者最近找不到合适的工作,只有外包公司来招聘自己去银行工作,但是自己对这个行业存在很多困扰和焦虑,于是准备写几篇这个文章进行分享。 今天分享一下外包、驻场、实施、To B、PO…