api接口

多层nginx中的压缩问题 api接口>1M数据的返回浏览器 网关

谁都会走 提交于 2019-12-02 03:58:36
基础 前端异步请求,局部刷新,加大最大等待时间 nginx开启压缩 进阶 多级nginx的压缩 实践测试: 每级都要开启压缩 gizp on; 最外层开启,但最内层没有开启 最外层没有开启 最外层、最内层均开启 实测是2层 api--> nginx version: nginx/1.12.2 --> nginx version: nginx/1.10.3 -->djangoServer 最外层(第1层) # http://nginx.org/en/docs/http/ngx_http_gzip_module.html gzip on; gzip_min_length 1000; gzip_proxied expired no-cache no-store private auth; #gzip_types text/plain application/xml; gzip_types *; location /api/ { gzip on; #add_header Transfer-Encoding 'identity'; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://p2:8080/api/; } } 最内层(第2层) # http://nginx.org/en/docs/http/ngx_http_gzip

DDNS 通过阿里云API接口实现 DDNS 动态解析

↘锁芯ラ 提交于 2019-12-02 03:21:46
#!/usr/bin/env python #coding=utf-8 from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest ################################## RR='@' #你休要通过接口修改的解析主机记录值 Value='139.199.16.145' #你需要更换的主机记录可以通过urllib等方法获取到本地ip地址 RecordId=' ' #在添加解析时返回的值就是RecordId 如果不知道RecordId 可以通过阿里云控制台按下f12不懂请看下图 accessKeyIdi='' #阿里云提供的认证服务 accessSecret='' #阿里云提供的认证服务 ##################################### ient = AcsClient(accessKeyId, accessSecret, 'default') request = CommonRequest() request.set_accept_format('json') request.set_domain('alidns.aliyuncs.com') request.set_method('POST')

API设计中防重放攻击

时光总嘲笑我的痴心妄想 提交于 2019-12-02 03:12:06
HTTPS数据加密是否可以防止重放攻击? 否,加密可以有效防止明文数据被监听,但是却防止不了重放攻击。 防重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击。重放攻击是什么呢?就是把你的请求原封不动地再发送一次,两次...n次,一般正常的请求都会通过验证进入到正常逻辑中,如果这个正常逻辑是插入数据库操作,那么一旦插入数据库的语句写的不好,就有可能出现多条重复的数据。一旦是比较慢的查询操作,就可能导致数据库堵住等情况。 付款接口,或者购买接口会造成损失 需要采用防重放的机制来做请求验证。 timestamp+nonce 我们常用的防止重放的机制是使用timestamp和nonce来做的重放机制。 timestamp用来表示请求的当前时间戳,这个时间戳当然要和服务器时间戳进行校正过的。我们预期正常请求带的timestamp参数会是不同的(预期是正常的人每秒至多只会做一个操作)。每个请求带的时间戳不能和当前时间超过一定规定的时间。比如60s。这样,这个请求即使被截取了,你也只能在60s内进行重放攻击。过期失效。 但是这样也是不够的,还有给攻击者60s的时间。所以我们就需要使用一个nonce,随机数。 nonce是由客户端根据足够随机的情况生成的,比如 md5(timestamp+rand(0, 1000)); 也可以使用UUID, 它就有一个要求,正常情况下,在短时间内

基于阿里云 DNS API 实现的 DDNS 工具

只谈情不闲聊 提交于 2019-12-02 03:08:30
0.简要介绍 0.1 思路说明 AliDDNSNet 是基于 .NET Core 开发的动态 DNS 解析工具,借助于阿里云的 DNS API 来实现域名与动态 IP 的绑定功能。工具核心就是调用了阿里云 DNS 的两个 API ,一个 API 获取指定域名的所有解析记录,然后通过比对与当前公网 IP 是否一致,一致则不进行更改,不一致则通过另外一个修改 API 来修改指定子域名的修改记录。 0.2 使用说明 使用时请更改同目录下的 settings.json.example 为 settings.json 文件,同时也可以显示通过 -f 参数来制定配置文件路径。例如: dotnet ./AliDDNSNet.dll -f ./settings.json2 ./AliDDNSNet -f ./settings.json3 NAS 运行效果图: 0.3.配置说明 通过更改 settings.json / settings.json.example 的内容来实现 DDNS 更新。 { // 阿里云的 Access Id " access_id ": "" , // 阿里云的 Access Key " access_key ": "" , // TTL 时间 " interval ": 600 , // 主域名 " domain ": "example.com" , // 子域名前缀 "

基于华为物联网IOT的应用开发 --- 基于.net 的SDK封装

浪尽此生 提交于 2019-12-02 02:48:40
最近,物联网的概念比较热门,一大批厂商抢着占领物联网的高低,包括有华为物联网、阿里云物联网、腾讯物联网、AWS物联网等等,无法一一列举,一般物联网包含设备侧开发、平台侧开发、应用侧开发,三个部分构成了线上线下的完整连接,和我们常规的微信应用、钉钉应用等不同,物联网的终端是由各种各样的设备组合而成,这些设备通过各种不同的协议(如CoAP,LWM2M、MQTT)连接到IOT的平台,而且这些设备是低能耗的设备,可以实时的发送数据上来,也可以接受来自IOT平台下发的各种操作指令。本篇随笔主要介绍基于华为物联网IOT的应用开发,实现对.net SDK的封装,方便后期进行应用集成使用。 1、物联网的相关介绍 物联网其实有点类似我们以前做的一些行业设备的接入,不过它相对比较通用化一些,可以连接各种各样的类型设备,而且更加安全、低能耗等,我们以前接入很多设备,可能需要走TCP/UDP协议,然后在后台服务器有一个对这些设备管理的一个Socket服务器,不过和物联网对比,这些都被彻底改造过了,以便适应更多的 应用场景,更简化的开发,以及支持更强大的功能吧。 物联网目前可以针对一些传感器采集一些特定的参数,如光感、温度、湿度、压力、电压、电流等常规的信息,也可以扩展实现语音、图像、视频等方面的采集处理,如经典的智慧路灯应用场景。 下面是其中的一个应用的架构设计,主要就是针对这些设备管理

04 .NET CORE 2.2 使用OCELOT -- 加入IdentityServer4

青春壹個敷衍的年華 提交于 2019-12-02 01:52:22
修改接口项目   在上次的项目基础上,分别修改两个api项目的startup.cs    public void ConfigureServices(IServiceCollection services) { var audienceConfig = Configuration.GetSection("Audience"); var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(audienceConfig["Secret"])); var tokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = signingKey, ValidateIssuer = true, ValidIssuer = audienceConfig["Iss"], ValidateAudience = true, ValidAudience = audienceConfig["Aud"], ValidateLifetime = true, ClockSkew = TimeSpan.Zero, RequireExpirationTime = true, };

.NET Core API后台架构搭建

我怕爱的太早我们不能终老 提交于 2019-12-01 23:51:32
ASP.NET Core API后台架构搭建 项目文件:https://files.cnblogs.com/files/ZM191018/WebAPI.zip 本篇可以了解到: 依赖注入 Dapper ORM框架 第一步:目录文件构建 新建两个类库: 添加好之后,文件构建如下: 第二步:下载Oracle.ManagerDataAccess.Core、Dapper程序包。 第三步:开发DB connection l 新建接口IConnectionProvider、IDbContext。IDbContext实现IDisposable。 l ConnectionProvider、DbContext分别实现接口IConnectionProvider、IDbContext l 再新建一个DbConnectionObj类。因为是使用Dapper ORM框架,因此需要提供一个IDbConnection对象。也就是说,这个类用来提供IDbConnection对象的。 完成DB connection的开发。 对于为什么要将connectionProvider单独拿出来,是因为如果更改使用不同数据库,那么改动该类即可。用途就体现出来了。 第四步:根据数据库表,编写Model。 第五步:开发Table Repository。也就是定义方法使用Dapper操作数据库进行数据的增删改查。 l

百度API实现音频识别

て烟熏妆下的殇ゞ 提交于 2019-12-01 21:35:14
借助百度API,通过python实现音频识别,注意,百度仅提供低于60s的python识别接口,且对输入音频格式有一定要求:录音参数必须符合 8k/16k 采样率、16bit 位深、单声道,支持的格式有:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式) 代码如下: # coding: utf-8 import urllib.request import json import base64 import os #设置应用信息 baidu_server = "https://openapi.baidu.com/oauth/2.0/token?" grant_type = "client_credentials" client_id = "XBGZGcu00cscPWt7AYguhjf7" #填写 API Key client_secret = "jGuw7Q9YTGKFKgvK7LPDEbKYHCyyGRYn" #填写 Secret Key #合成请求token的URL url = baidu_server+ "grant_type=" +grant_type+ "&client_id=" +client_id+ "&client_secret=" +client_secret # print("---"*30) #获取token res = urllib

Python多线程豆瓣影评API接口爬虫

限于喜欢 提交于 2019-12-01 17:05:59
爬虫库 使用简单的requests库,这是一个阻塞的库,速度比较慢。 解析使用XPATH表达式 总体采用类的形式 多线程 使用concurrent.future并发模块,建立线程池,把future对象扔进去执行即可实现并发爬取效果 数据存储 使用Python ORM sqlalchemy保存到数据库,也可以使用自带的csv模块存在CSV中。 API接口 因为API接口存在数据保护情况,一个电影的每一个分类只能抓取前25页,全部评论、好评、中评、差评所有分类能爬100页,每页有20个数据,即最多为两千条数据。 因为时效性原因,不保证代码能爬到数据,只是给大家一个参考思路,上代码 : 1 from datetime import datetime 2 import random 3 import csv 4 from concurrent.futures import ThreadPoolExecutor, as_completed 5 6 from lxml import etree 7 import pymysql 8 import requests 9 10 from models import create_session, Comments 11 12 #随机UA 13 USERAGENT = [ 14 'Mozilla/5.0 (Windows NT 6.1; WOW64)

vue配置跨域

故事扮演 提交于 2019-12-01 16:35:58
1,引入 axious,cd 到你的工程 npm install --save axios vue-axios 在 main.js 中加入 import Vue from 'vue' import axios from 'axios' Vue.prototype.$axios = axios 注意 Vue.prototype.$axios = axios这句话就决定了你以后使用axious的时候就必须以$ axious 这种方式进行 axious 引入结束之后在 config/index.js 文件中加入: proxyTable : { '/api' : { target : 'http://localhost:8080' , //你要跨域的网址 比如 'http://news.baidu.com', // secure: true, // 如果是https接口,需要配置这个参数 changeOrigin : true , //这个参数是用来回避跨站问题的,配置完之后发请求时会自动修改http header里面的host,但是不会修改别的 pathRewrite : { '^/api' : '/api' //路径的替换规则 //这里的配置是正则表达式,以/api开头的将会被用用‘/api’替换掉,假如后台文档的接口是 /api/list/xxx //前端api接口写:axios