.Net Core WebApi基本使用

一. 简单理解 Core WebApi

  WebApi顾名思义,网络应用程序编程接口。比如我们在开发的时候,需要调用第三方数据接口(例如天气预告,地图定位经纬度等),这个时候所谓第三方的数据接口就可以用.Net Core WebApi进行开发。

二. 什么时候使用 Core WebApi

   Core WebApi与 Core MVC比较一下:Core WebApi不需要写页面,前后端完全分离,只关注返回数据。Core MVC大部分需要返回页面,是一套完整的web框架,主要用于中小型单体应用网站开发(例如后台管理系统)。

  需要前后端分离开发,需要分布式部署,需要与手机App,微信小程序或者其他应用程序交互,就使用WebApi。

  相同点:项目结构差不多(mvc只是多了与UI相关的文件),技术知识点基本一致,可以说会了Core WebApi或者 Core MVC的其中一个,学习另一个也是很容易的。

在这里插入图片描述

三. 开始使用 Core WebApi

1.创建项目

在这里插入图片描述

2.路由配置方式

  Core WebApi默认遵循Restful风格(个人觉得有局限性,每个控制器支持的方法太少,比较鸡肋),所以我们也可以直接通过特性路由来配置请求路径。

在这里插入图片描述

3.Swagger UI配置

  Swagger UI是一款Restful接口的文档在线自动生成+功能测试功能软件。配置Swagger UI,有利于接口调用者查阅和测试。
  当然,使用Postman工具做功能测试也是不错的选择。

  1.添加nuget包

在这里插入图片描述

  2.注册Swagger服务

在这里插入图片描述

  3.使用Swagger中间件

在这里插入图片描述
  4.效果展示。注意:必须配置好控制器中每个方法的请求方式 [HttpGet]/[HttpPost]等,否则swagger UI显示会报错
  

在这里插入图片描述

4.集成Log4Net

  与Core MVC一样,可以参考以下文章: .Net Core +EF Core+Log4Net基本三层架构搭建.

5.跨域配置

  我们有时候在使用Ajax请求WebApi的时候,会报下面这个错误:
  

在这里插入图片描述

  
  这是因为浏览器的同源策略(Sameoriginpolicy),它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。
  
  
在这里插入图片描述
  
  解决方式:
  1.JSONP 通过浏览器标签去请求WebApi;避开跨域问题。
  2.通过后台模拟Http请求去请求WebApi
  3.在服务器端允许跨域

  下面我们用第三种方式解决问题,首先安装依赖于程序包:Microsoft.AspNetCore.Cors

在这里插入图片描述

  然后注册跨域服务并使用跨域中间件

在这里插入图片描述
  结果展示:跨域访问成功

在这里插入图片描述
  如果跨域任然失败,可以考虑修改跨域策略,例如(可以有各种各样的策略,发布api端口的选择也需要注意):
在这里插入图片描述

6.授权认证

请点击链接: Session/Cookie认证, Basic Auth认证, JWT Token认证使用场景和优缺点分析.

  
  

四. Core WebApi 接收前端传过来的数据

  Content-Type:application/json的数据:前端对json数据进行JSON.stringify()序列化,后台直接用对应的实体类或者list集合直接接收(或者用[FromBody] string value接收,接收后反序列化:一般不这么做)(post请求)

  Content-Type:text/plain 数据:[FromForm]实体类获取,或者直接[FromForm] 普通数据类型获取。(post请求)

  另外,如果是实体类接收前端参数,实体类前需要加[FromQuery]或者[FromHeader](get请求)

  注意:无论实体类方式接收还是普通数据类型参数接受数据,都必须保证前后端字段名一致(不讨论特殊情况)。

  
  
  
  

  • 23
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值