WebApi和MVC的区别
MVC:完整的Web开发框架,网站开发框架,包含了业务处理+用户UI;
WebApi:其实就是一个服务接口,主要作用是用来服务的;一种对外的接口;用它来无法独立完成一套web开发,需要和前端配合完成;WebApi主要负责处理业务,不管用户的UI界面;Webapi性能更加优于MVC;更加轻巧;WCF,WebService;网络服务; 更多适合移动端配置; 数据传输—JSON
如果团队中前端人才相对较少;可以选择MVC;
如果只是对外提供服务—前后端分离—支持移动端服务—WebApi;
RESTful架构风格和WebApi
- 资源与URI
- 统一资源接口
- 资源的表述
- 资源的链接
- 状态的转移
MVC—调用Action本质是调用方法;在服务端统一处理;
RestFull:不再是调用方法;把服务资源化;看做一个整体;然后对外提供一个URI----统一资源定位器;提供Get/Post/Put/Delete/Patch 五种操作;
资源化----其实WebApi一般情况下,很少遵循RestFull
资源:班级,某一个同学;
Swagger版本控制
版本控制。WebApi程序创建时,自动集成Swagger
WebApi路由&特性路由
特性路由
WebApi前台调用详析
Ajax调用;
WebApi后台调用详析
后台模拟Http请求
WebApi跨域请求
这就是跨域请求给我们展示的错误:
报错!
是因为浏览器的同源策略导致置的跨域问题;
你们认为这个请求,服务端能够响应不?
服务器其实能够响应;
浏览器同源策略
跨域问题其实是浏览器所限定的;
同源策略 是由NetScape提出的一个著名的安全策略。所谓的同源,指的是协议,域名,端口相同。浏览器处于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情况下,浏览器认为这个资源不安全,不能用。
同源策略的作用是什么?是为了保护服务器;
一是来自一个源的js只能读写自己源的存储不能读写其他源的存储,存储包括Cookie、Session Storage、Local Storage、Cache、Indexed DB等。
解决跨域
1.JSONP —前端开发者使用较多
2.通过后台模拟Http请求请求Api 本质是避开浏览器同源策略
3.在服务器端指定允许你跨域
CoreWebApi如何让Api支持跨域
基于Http请求中在响应中增加Header参数:Add(“Access-Control-Allow-Origin”, “*”);
AOP-Filter
AspNetCore:AOP—Filter
MiddleWare跨域
依赖于程序包:Microsoft.AspNetCore.Cors
services.AddCors(option => option.AddPolicy(“AllowCors”, _build => _build.AllowAnyOrigin().AllowAnyMethod()));
app.UseCors(“AllowCors”); //必须要在UseRouting 之后 在 UseAuthorization之前
JSONP
在部分Html标签中,在请求服务器的时候,不用受浏览器同源策略限制;