webapi

WebApi-路由机制

匿名 (未验证) 提交于 2019-12-02 22:10:10
一、WebApi路由机制是什么?    路由机制通俗点来说:其实就是WebApi框架将用户在浏览器中输入的Url地址和路由表中的路由进行匹配,并根据最终匹配的路由去寻找并匹配相应的Controller和Action并执行的一个过程。 下面我么分别对这几个流程进行详细说明。 二、匹配URL路由   WebApi框架接收到来自外部的接口请求后,首先将路由表中的路由一条一条和Url地址进行匹配,一旦匹配上则不再继续往下匹配,如果匹配完了所有路由都未匹配上,则会报404错误。 如果成功匹配上指定路由,则框架根据路由的Url模板中指定的Controller的所在位置以及Action的所在位置从用户请求的Url中提取出将要调用的Controller的名称以及Action的名称,当然要被调用的Controller名或者Action名也可能不是从用户发起的接口调用请求Url中获得的,因为WebApi中在进行路由配置时提供了参数默认值的配置,也就是说Controller名或者Action名可能来源于路由配置时的默认值。 该流程结束后:WebApi框架将会从用户请求的接口调用URL中提取出用户想调用的接口所对应的Controller 、Action 、以及用户传给指定Action的参数(即路由数据)等等, 这些数据存储在了一个字典集合中,这个路由数据字典我们可以在 Action方法 中通过如下方式获得

webAPi OData的使用

匿名 (未验证) 提交于 2019-12-02 22:10:10
一、OData介绍 开放数据协议(Open Data Protocol,缩写OData)是一种描述如何创建和访问 Restful 服务的 OASIS 标准。 二、OData 在asp.net mvc中的用法   1、在vs中新建webApi项目 2、添加测试类型 public class Product { public int Id { get; set; } public string ProductName { get; set; } } 3、开启EF自动迁移,添加EF上下文, namespace ODataTest.Migrations { using System; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Linq; using ODataTest.Models; internal sealed class Configuration : DbMigrationsConfiguration<ODataTest.Models.EFContext> { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; }

webapi服务端对接app

匿名 (未验证) 提交于 2019-12-02 22:10:10
目前 我做的接口中所用到了 如下技术: /// <summary> /// 返回客户端错误信息 /// </summary> /// <param name="request">http请求</param> /// <param name="needEncrypt">是否加密响应信息</param> /// <param name="errorMessage">错误信息</param> /// <returns> /// 异步方式返回的错误消息 /// </returns> private Task<HttpResponseMessage> GenerateErrorResponse(HttpRequestMessage request, bool needEncrypt, string errorMessage = "请求参数错误") { // 记录错误的请求日志 LogErrorRequest(request); // 生成错误响应消息 var response = new HttpResponseMessage(); var error = JsonConvert.SerializeObject(new ApiResult() { Message = errorMessage }); response.Content = new StringContent(error,

.NET CORE webapi eppluse 导入导出 (实习第一个月的笔记)

匿名 (未验证) 提交于 2019-12-02 22:09:29
最近有个需求就是网页表格里面的数据导出到excel 于是从各位前辈的博客园搜搜了demo 大部分非为两类 都是用的插件NPOI和Eppluse ,因此在这里就介绍Eppluse 用法,还有就是在博客的时候 好多有留言说想看从数据库里面的数据进行导入 而不是写死的,所以我就以我的案例给大家分享下用法(代码写得不好勿喷) 1.因此,让我们创建一个新的ASP.NET Core WEB API应用程序并安装EPPlus.Core。要安装EPPlus.Core,请在程序包管理器控制台中运行以下命令: PM -> Install - Package EPPlus . Core2 .导入 然后在对应的控制器进行操作 上代码 导出 以上就是导入导出了 但是我在系的过程中碰到了一个问题就是在本地测试的时候能够下载 放到服务器上就不行了 可能是因为权限问题 如果有前辈碰到类似问题解决了还望能指点下。 来源:博客园 作者: 白白不想变白 链接:https://www.cnblogs.com/woshibaibaibai/archive/2019/09/22/11568490.html

.net core Webapi +EF

匿名 (未验证) 提交于 2019-12-02 22:09:29
开发工具 Vs2017 +MSsqlsever 打开VS2017,新建web项目 点击确认,生成项目,在项目中增加文件夹Model,在Model中增加类TodoItem 1 public class TodoItem 2 { 3 public long Id { get; set; } 4 public string Name { get; set; } 5 public bool IsComplete { get; set; } 6 7 } View Code 在Model中增加类TodoContext,用于与数据库的交互 1 public class TodoContext : DbContext 2 { 3 public TodoContext(DbContextOptions<TodoContext> options) 4 : base(options) 5 { 6 } 7 8 public DbSet<TodoItem> TodoItems { get; set; } 9 } View Code 打开appsettings.json,配置数据库连接字符串 { "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": {

C#进阶系列――WebApi 接口测试工具:WebApiTestClient

匿名 (未验证) 提交于 2019-12-02 22:09:29
C#进阶系列――WebApi 接口测试工具:WebApiTestClient 一、WebApiTestClient介绍 1、WebApiTestClient组件作用主要有以下几个: (1)、将WebApi的接口放到了浏览器里面,以可视化的方式展现出来,比如我们通过http://localhost:8080/Help这个地址就能在浏览器里面看到这个服务里面所有的API接口以及接口的详细说明,省去了我们手写接口文档的麻烦。 (3)、可以修改http请求头文件Head和请求体Body里面的参数,指定发送http请求的特性,比如指定我们最常见的contentType指示参数的类型。 (4)、组件拥有测试接口的功能,用过Soup UI的朋友应该知道,通过Soup UI能够方便测试WebService参数以及返回值。我们的WebApiTestClient也可以实现类似的功能,直接通过页面上的测试按钮,就能测试接口。 2、WebApiTestClient是一个开源组件。开源地址:https://github.com/yaohuang/WebApiTestClient 二、WebApiTestClient展示 点击某一个接口查看接口详细。例如本文查看Get请求的无参方法,右下角有按钮可以测试接口。 点击“Test API”按钮 点击Send发送请求 第二个有参数的接口 手动输入参数,得到返回结果

WebAPI Angularjs 上传文件

匿名 (未验证) 提交于 2019-12-02 22:06:11
今天发现的问题 在谷歌浏览器一直运行良好的功能,在edge浏览器不能使用。 代码参考我的另 一篇博客: WebAPI Angularjs 上传文件 不能运行的原因 下图红框中的代码在edge浏览器中无法执行,也就不能执行下面的上传文件代码。 解决方案 既然原因找到了,就可以寻找解决方案了,找了一下午,有一篇有用的文章: angular ng-click程序触发,方法 我的解决方案(注意加粗加大的代码【关键哟】) JS代码如下: define(['app'], function (app) { app.controller('editController', ['$scope', "$http", 'webConfig', function ($scope, $http, webConfig) { $scope.save = function () { var fd = new FormData(); var file = document.querySelector('input[type=file]').files[0]; fd.append('logo', file); //angular 上传的文件必须使用特殊的格式处理,不是json格式 $http({ method: 'POST', url: webConfig.apiRoot + "/api

c#搭建webapi项目

匿名 (未验证) 提交于 2019-12-02 22:06:11
一、添加WebApi项目 二、nuget下载WebApi所需的类库引用 三、WebApi基础配置 配置webapi路由、跨域支持 public static class WebApiConfig { public static void Register(HttpConfiguration config) { //跨域配置 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); //webApi路由 config.MapHttpAttributeRoutes(); //设置webapi路由规则 config.Routes.MapHttpRoute( name: "AreaApi", routeTemplate: "api/{area}/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); config.Routes.MapHttpRoute( name: "WebApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); //移除xml返回格式数据

WebAPI调用笔记

匿名 (未验证) 提交于 2019-12-02 22:06:11
前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录。 接口描述 首先说明一下,基于Http协议的Get、Post请求,网上有很多例子,其实方法都是一样的,这块没什么好说的,我也测试过我的代码,正常的调用是没问题的。问题不是在请求方法上,而是在如何取出数据上。 因为对应我需求接口的开发是个实习生,对于如何提供接口,他并不熟悉,其中我还帮了一些忙,但我毕竟不是很熟BS端那块,纠结了1天多才调通接口。 描述一下需求接口: OA方需要提供头像下载的接口供即时通信初次登陆时下载头像。 思路如下: 1.接口内将OA头像文件夹打包压缩成zip文件 2.将zip文件,转成字节流byte[] 3.将字节流byte[]序列化成json格式 返回 问题 思路1、2他按照我的要求做了,我测试接口后遇到的问题是取出的byte[]顺序不对,我本地反序列化后转成zip文件没法解压,多次测试后我又让他按照思路3来做。 测试接口,遇到了个问题,我反序列化出来的json字符串,包含了d,如下: 解决 因为不熟悉这块,我不知道如何取出d中的数据,上网查也不好查,因为几乎没有问这块的,后来我问OA做手机端的同事,才知道他们提供的接口方法都是void,不在返回值的,都是通过http的Context.Response返回的

asp.net―WebApi跨域

匿名 (未验证) 提交于 2019-12-02 22:06:11
一、什么是跨域?   定义:是指浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。   同源策略限制了以下行为:   1、Cookie、LocalStorage和IndexDB无法读取   2、DOM和js对象无法获取   3、ajax请求无法发送 二、为什么要跨域?      跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)相同,则允许相互访问。   那么跨域就是在 协议+主机名+端口号(如存在)不相同时,让其允许相互访问。 三、webapi跨域解决办法   跨域解决办法有多种, 这里我给出最近在webapi + vue 实现前后端分离项目开发中的跨域解决方案:   (1)WebApi配置文件里面添加如下配置信息即可 <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="*" /> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />