webapi

autofac解析Mvc和Webapi的坑

坚强是说给别人听的谎言 提交于 2020-02-22 12:50:56
  我们在项目中很早就开始使用autofac,也以为知道与mvc和webapi集成的做法。 var builder = new ContainerBuilder(); // Mvc Register builder.RegisterControllers(Assembly.GetExecutingAssembly()).AsSelf().PropertiesAutowired(); builder.RegisterFilterProvider(); builder.RegisterType<UserService>().As<IUserService>().InstancePerLifetimeScope(); //WebApi Register builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).AsSelf().PropertiesAutowired(); builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration); builder.RegisterWebApiModelBinderProvider(); var container = builder.Build(); // Set the dependency

WebApi返回数据类型针对部分api设置json格式数据风格

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-19 19:11:57
在全局设置webapi设置json返回类型首字母小写:config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 但是想针对个别api设置默认的json格式,怎么办呢? 下面是一种方案: 第一步:自定义一个消息处理程序 /// <summary> /// 自定义http消息处理程序 /// </summary> public class MessageHandlerOne : DelegatingHandler { protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { if (request.RequestUri.AbsolutePath.Contains("api地址中使用默认的标识"))//如api/ddd request.GetConfiguration().Formatters.JsonFormatter.SerializerSettings.ContractResolver = new

VsCode开发.NetCore项目二(WebApi接口及Swagger在线接口文档的使用)

微笑、不失礼 提交于 2020-02-19 12:22:29
  上一篇讲了VsCode的简单介绍,本次主要讲一下VsCode如何创建WebApi项目,及Swagger在线接口文档的使用. 一.创建WebApi项目. 首先打开VsCode 终端控制台,并将工作区指向自己的项目文件夹(手动创建项目文件夹),可输入"cd 项目文件路径"自动进行修改. 指向自已的项目文件夹后,在终端控制台中,输入"dotnet new webapi"即可创建一个空的WebApi项目模板. 如下图,是已经创建成功了的,可以看到,里面已有一个示例控制器了. 创建成功后,该接口是可以直接在浏览器正常访问的了,为了方便查看,下一步,开始创建Swagger在线接口. 二.集成Swagger在线接口文档. 1.首先Swagger程序集引用.在终端控制台输入"dotnet add package Swashbuckle.AspNetCore"即可自动添加程序到项目中.如需指定版本,可在后面追加 " -v 2.0.1"(版本号). 2.打开项目中的Startup.cs文件. 找到ConfigureServices方法,添加Swagger服务并配置文档信息. public void ConfigureServices (IServiceCollection services) { // 注册Swagger服务 services.AddSwaggerGen (c => { //

.NET Core WebAPI post参数传递时后端的接收方式

余生颓废 提交于 2020-02-15 20:56:40
.NET Core WebAPI post参数传递时后端的接收方式 实体类 dynamic动态类型 JObject参数 单值参数(字符串参数) A.前端Post请求代码 $.ajax({ url: "/api/student/poststudent", type: 'POST', data:JSON.stringify({ name: "张三", age: 21 }), success:function () { }, dataType: "json", contentType: "application/json" }); B.后端接收参数方式 1. 实体类 实体类是比较简单的一种传参方式,使用频率非常高。 添加实体类 public class Student { public string Name { get; set; } public int Age { get; set; } } 后台处理Post请求代码 [HttpPost("{id}")] public void PostStudent(Student student) { } 接收参数结果 2.dynamic动态类型 后台处理Post请求代码 [HttpPost("{id}")] public void PostStudent(dynamic student) { var name = student.name;/

ASP.NET WEBAPI 的身份验证和授权

和自甴很熟 提交于 2020-02-15 05:45:27
定义 身份验证(Authentication) :确定用户是谁。 授权(Authorization) :确定用户能做什么,不能做什么。 身份验证 WebApi 假定身份验证发生在宿主程序称中。对于 web-hosting,宿主是 IIS。这种情况下使用 HTTP Module 进行验证。 验证时,宿主会创建一个表示安全上下文的主体对象(实现 IPrincipal),将它附加到当前线程。主体对象包含一个存储用户信息的 Identity 对象。若验证成功,Identity.IsAuthenticated 属性将返回 true。 HTTP 消息处理程序(HTTP Message Handler) 可以用 HTTP 消息处理程序代替宿主进行身份验证。这种情况下,由 HTTP 消息处理程序检查请求并设置主体对象。 请考虑以下事项决定是否使用消息处理程序进行身份验证: HTTP 模块检查所有经过 asp.net 管道的请求,消息处理程序只检查路由到 WebAPI的请求。 可以为每个路由单独设置消息处理程序。 HTTP 模块仅在 IIS 中可用。消息处理程序则与宿主无关,在 web-hosting 和 self-hosting 中均可用。 HTTP 模块参与IIS 日志和审计等功能。 HTTP模块在管道之前运行,主体在消息处理程序运行之前不会设置,当响应离开 消息处理程序时

.net Core2.2 WebApi通过OAuth2.0实现微信登录

大憨熊 提交于 2020-02-15 00:20:15
前言 微信相关配置请参考 微信公众平台 的这篇文章。注意授权回调域名一定要修改正确。 微信网页授权是通过OAuth2.0机制实现的,所以我们可以使用 https://github.com/china-live/QQConnect 这个开源项目提供的中间件来实现微信第三方登录的流程。 开发流程 1、新建一个.net core webapi 项目。在NuGet中查找并安装 AspNetCore.Authentication.WeChat 包。 2、修改 appsettings.json 配置文件,增加以下配置: 1 "Authentication": { 2 "WeChat": { 3 "AppId": "微信AppID", 4 "AppSecret": "微信AppSecret" 5 } 6 }, 7 "Logging": { 8 "LogLevel": { 9 "Default": "Debug", //日志级别从低到高,依次为:Debug,Information,Warning,Error,None 10 "Microsoft.EntityFrameworkCore": "Error", 11 "System": "Error" 12 } 13 } 3、修改 Startup 1 services.AddSingleton<IHttpContextAccessor,

创建WebApi Odata v3 终结点

自闭症网瘾萝莉.ら 提交于 2020-02-09 04:36:58
开放数据协议(OData) 是用于 web 的数据访问协议。 OData 提供统一的方法来构造数据、 查询的数据和操作该数据集通过 CRUD 操作 (创建、 读取、 更新和删除)。 OData 支持 AtomPub (XML) 和 JSON 格式。 OData 还定义了一种方法来公开数据的元数据。 客户端可以使用元数据发现的类型信息和数据集的关系。 ODataConventionModelBuilder 创建 EDM 使用一组默认命名约定 EDM。 此方法要求最少的代码。 如果你想更好地控制 EDM,则可以使用 ODataModelBuilder 类,以通过添加属性、 键和导航属性显式创建 EDM。 请求 GET http://localhost:61068/odata HTTP/1.1 User-Agent: Fiddler Host: localhost:61068 Accept: application/json 返回 { "odata.metadata":"http://localhost:61068/odata/$metadata","value":[ { "name":"Products","url":"Products" } ] } 探索 OData 终结点 服务元数据文档 服务元数据文档介绍了使用一种称为概念架构定义语言 (CSDL) 的 XML 语言的服务数据模型

webAPI案例之三分钟玩转动画封装

纵然是瞬间 提交于 2020-02-09 01:20:46
webAPI案例之三分钟玩转动画封装 动画原理: 获得盒子当前位置 让盒子在当前位置加上1个移动距离(注意此元素需要添加定位才能使用left) 利用定时器不断重复这个操作 加一个结束定时器的条件 1. 从简单开始 效果图: 思路相关 : 相关代码: < ! DOCTYPE html > < html lang = "en" > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < title > Document < / title > < style > div { position : absolute ; width : 100 px ; height : 100 px ; background - color : antiquewhite ; } < / style > < / head > < body > < div > < / div > < script > var div = document . querySelector ( "div" ) ; var timer = null ; timer = setInterval ( go , 20 ) ; function go ( ) {

.net core3.1 webapi + vue + element-ui upload组件实现文件上传

余生颓废 提交于 2020-02-07 14:44:11
首先,先看我个人的项目结构。 这个webapi项目是专门作为图片上传的业务处理,而其中分为两个控制器:单图片上传和多图片上传。在接下来的内容主要还是针对单文件上传,对于多文件的上传,我暂且尚未研究成功。 其中pictureoptions类,由于我把关于图片上传相关的配置项(保存路径、限制的文件类型和大小)写在了配置文件中,所以接下来会通过依赖注入的方式,注入到这个类中 接下来,正式开工 第一步,配置文件的设置 "PictureOptions": { "FileTypes": ".gif,.jpg,.jpeg,.png,.bmp,.GIF,.JPG,.JPEG,.PNG,.BMP", "MaxSize": 10485760, "ImageBaseUrl": "G:\\dotnet\\imageServer\\evaluate" } 然后在项目根目录下新建PictureOptions类 1 public class PictureOptions 2 { 3 /// <summary> 4 /// 允许的文件类型 5 /// </summary> 6 public string FileTypes { get; set; } 7 /// <summary> 8 /// 最大文件大小 9 /// </summary> 10 public int MaxSize { get; set; }

WebAPI AJAX写法

爷,独闯天下 提交于 2020-02-07 00:09:29
1、 $(function () { var dataJSON = {Id:1,Title:'标题测试'}; console.log(JSON.stringify(dataJSON)); $.ajax({ url: "http://localhost:53620/api/values", type: "Post", data: JSON.stringify(dataJSON), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function () { } }) }) 2、 $.ajax({ url: "http://localhost:53620/api/values", type: "Post", data: { Id: 1, Title: '标题测试' }, success: function () { } }) 来源: https://www.cnblogs.com/superfeeling/p/12271593.html