api接口

面向对象----内部类、常见API

和自甴很熟 提交于 2019-11-28 08:37:18
01_ 类名作为形参和返回值 *类名作为方法的形参和返回值,其实需要的和返回的是该类的对象,看下面案例: 02_ 抽象类名作为形参和返回值、 *方法的形参是抽象类名,其实需要的是该类的子类对象 *方法的返回值是抽象类名,其实返回的是该抽象类的子类对象 03_ 接口名作为形参和返回值 *方法的形参是接口名,其实需要的是该接口的实现类对象 *方法的返回值是接口名,其实返回的是该接口的实现类对象 04_ 内部类 概念: 一个类定义在另一个类里面 , 这个里面的类称为内部类 , 这个外面的类称为外部类 内部类也叫嵌套类 , 密封类 .我们重点掌握匿名内部类。 匿名内部类 ( 掌握 ): 1.为什么使用匿名内部类? 有些子类或接口的实现类只创建一次对象 , 可以用匿名内部类替换 , 可以少写很多 .Java 文件 格式 new 类名 / 接口名 () { 重写方法 } 2.格式的理解 匿名的子类对象 / 匿名的接口实现类对象 3.内部类在实际开发中的应用 接口多态 写一个接口 写一个使用类 , 写一个方法 , 方法的参数是接口类型 在启动类的 main 方法中 , 创建使用类对象 , 调用方法 , 传入匿名内部类 09_Math ( 数学相关的都可以找 Math) 10_System 代码演示: 11_Object 类的 toString() 方法 注意:Object 是类层次结构的根类 .

API接口签名验证

偶尔善良 提交于 2019-11-28 07:19:03
系统从外部获取数据时,通常采用API接口调用的方式来实现。请求方和接口提供方之间的通信过程,有这几个问题需要考虑: 请求参数是否被篡改; 请求来源是否合法; 请求是否具有唯一性; 今天跟大家探讨一下主流的通信安全解决方案。 参数签名方式 这种方式是主流。它要求调用方按照约定好的算法生成签名字符串,作为请求的一部分,接口提供方验算签名即可知是否合法。步骤通常如下: ①接口提供方给出appid和appsecret ②调用方根据appid和appsecret以及请求参数,按照一定算法生成签名sign ③接口提供方验证签名 生成签名的步骤如下: ①将所有业务请求参数按字母先后顺序排序 ②参数名称和参数值链接成一个字符串A ③在字符串A的首尾加上appsecret组成一个新字符串B ④对字符串进行md5得到签名sign 假设请求的参数为:f=1,b=23,k=33,排序后为b=23,f=1,k=33,参数名和参数值链接后为b23f1k33,首尾加上appsecret后md5: md5(secretkey1value1key2value2...secret)。 以上签名方法安全有效地解决了参数被篡改和身份验证的问题,如果参数被篡改,没事,因为别人无法知道appsecret,也就无法重新生成新的sign。 这里使用了md5的算法进行签名,也可以自行选择其他签名方式,例如RSA,SHA等。

如何使用外部API接口实现快递物流单号查询(快递鸟案例)

半世苍凉 提交于 2019-11-28 03:40:19
前两天需要做一个快递查询的需求,由于也是第一次做,完全不懂,但是还是明白这必定是需要调用外部接口来实现,并且应该不是调用快递公司所给的接口,于是便上网查询了能够提供快递查询接口的公司。 目前国内主流的快递物流查询API接口服务商目前只有三家,分别是菜鸟、快递鸟、快递100,这三家都分别获得了融资,菜鸟是阿里投资的,为淘系(淘宝和天猫)服务,快递鸟是中银粤财、东方富海、启赋资本投资的,为非淘系(拼多多、蘑菇街、网易考拉等)服务,快递100是京东、国信弘盛投资的,为京东、百度等服务。 还有一些像阿里云是应用市场平台,入驻这类的平台的很多服务商都是用的快递鸟免费物流接口(这家产品介绍用的都是快递鸟官网的图),因为菜鸟和快递100都是收费的(融资信息可以在投资界网站上查看)。 快递API的应用场景与用途 最常见的应用场景如下: (1)电商网站:例如B2C、团购、B2B、批发分销站、C2C、本地生活交易等网站。 (2)管理系统:订单处理平台、订货平台、发货平台、分销系统、渠道管理系统、客户管理系统、ERP等。 快递API的用途如下: (1)让顾客登录网站后,直接在“我的订单”页面内就能看到订单的物流状态。 (2)自动筛选出“已签收”、“疑难件”等状态的单号,减轻物流跟单人员的压力。 (3)改变订单的状态和交易流程,例如单号变为“已签收”,就能让订单变为可以确认退换货等。 (4

Feign 客户端的重构,新建springcloud架构

眉间皱痕 提交于 2019-11-28 03:18:49
1,在上篇博文中,已经实现了feign 客户端来远程调用接口的功能,因为feign 客户端在springcloud 开发过程中是比较常用的方式 https://www.cnblogs.com/pickKnow/p/11385656.html 2,上一篇博文中的架构,比较简单,直接使用feign 客户端没有重构的话,代码比较冗余。例如,member 服务中调用FeignMember 中的 getOrder 接口,FeignOrder 中的接口的具体实现在order 服务中的getOrder 中来实现 这样的代码比较冗余,如果有很多方法,就得写好多的接口。。。 @FeignClient(name = "app-aiyuesheng-order") public interface OrderFeign { @RequestMapping("/getOrder") public String getOrder(); 。。。。 。。。。 如果有好多接口,这边得写很多,代码很冗余 } 3,springcloud 项目中,重构feign 客户端 项目的最终的目录结构 -----eureka: 单独的项目,eureka 注册中心 -----springcloud-parents: 父项目,里面是共同的依赖,maven project 的打包类型选择pom ---------

RPC框架初体验之入门

一世执手 提交于 2019-11-28 03:10:11
RPC框架初体验之入门 项目地址:https://github.com/shirukai/learn-demo-rpc.git RPC全称Remote Procedure Call,顾名思义,远程过程调用的意思。关于RPC的介绍,可以参考一下简书上 《如何给老婆解释什么是RPC》 这篇文章,很有趣。RPC这个概念,我第一次接触是在《Spark内核设计的艺术》这本书里。后来在看微服务的时候,也提及到了几款RPC框架,比如Thrift、Dubbo、gRPC。所以决定认真的学习一下RPC以及这几种框架。下面将会在本篇文章里入门RPC,动手实现一个简单的RPC,再基于Netty实现一个RPC,最后简单介绍一下几款常见的RPC框架,以及它们的优缺点。后面将会以系列的形式分别介绍这几款常见的RPC框架的使用。 1 动手实现一个简单的RPC 为了深入理解RPC,这里动手实现了一个简单的RPC,服务之前通过简单的socket进行通讯。 1.1 项目描述 在learn-demo-rpc项目下有一个simple-rpc的模块,该模块实现了一个简单的RPC,其中包括四个子模块 simple-rpc/ ├── simple-rpc-api ├── simple-rpc-consumer ├── simple-rpc-core └── simple-rpc-provider simple-rpc-api:

RPC框架初体验之Dubbo

旧时模样 提交于 2019-11-28 03:09:55
RPC框架初体验之Dubbo 版本描述:dubbo 2.7.2 Dubbo是阿里开源的一款RPC框架,最近在学习微服务的时候有提及到。因此对Dubbo进行了入门级体验,这里主要体验体验Dubbo的几种配置方式,如XML配置、API配置、注解配置,以及Springboot里整合Dubbo,同时体验几种注册中心,如simple、zk、redis、multicast。 Dubbo官网内容还是很丰富的,支持中文。地址:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html 1 Dubbo配置使用 1.1 基于原生API的配置 官网文档:http://dubbo.apache.org/zh-cn/docs/user/configuration/api.html 怎么说呢,参考官网这个文档实现时踩了不少坑,因为官网提供的注册中心没法使用,又是初次接触,走了不少弯路,而自己又是直肠子一根,非要自己实现一个注册中心,然后参考官网给的Simple注册中心的例子,有两点逼得我强迫症犯了,首先使用的是XML配置的方式创建注册中心服务,而我这里只想通过原生API实现,另一个 <!-- 简单注册中心实现,可自行扩展实现集群和状态同步 --> < bean id = " registryService " class = " org.apache

【spark】SparkSession的API

泪湿孤枕 提交于 2019-11-28 01:56:12
SparkSession是一个比较重要的类,它的功能的实现,肯定包含比较多的函数,这里介绍下它包含哪些函数。 builder函数 public static SparkSession.Builder builder() 创建 SparkSession.Builder,初始化SparkSession. setActiveSession函数 public static void setActiveSession(SparkSession session) 当SparkSession.GetOrCreate()被调用,SparkSession发生变化,将会返回一个线程和它的子线程。这将会确定给定的线程接受带有隔离会话的SparkSession,而不是全局的context。 clearActiveSession函数 public static void clearActiveSession() 清除当前线程的Active SparkSession。然后调用GetOrCreate将会返回第一次创建的context代替本地线程重写 setDefaultSession函数 public static void setDefaultSession(SparkSession session) 设置默认的SparkSession,返回builder clearDefaultSession函数

【Swagger2】【3】API注解详解,以及注解常用参数配置

我与影子孤独终老i 提交于 2019-11-27 22:09:20
前言: @Api,@ApiOperation,@ApiImplicitParam,@ApiModelProperty 正文: 1,Controller层 @CrossOrigin(origins = "*") @RestController @Api(tags = {"文章接口"}) public class ArticleController { @ApiOperation(value = "文章详情") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "文章编号", required = true, dataType = "String", paramType = "query"), }) @RequestMapping(value = "article", method = RequestMethod.GET) public Result<Article> getArticleInfo(String id) { return this.theService.getArticleInfo(id); } } @Api: 作用在类上,用来标注该类具体实现内容。 参数: 1,tags:该类的名称 2,description:描述该类的作用 @ApiOperation: 表示一个http请求的操作 参数: 1

物联网时代-跟着Thingsboard学IOT架构-HTTP设备协议及API相关限制

给你一囗甜甜゛ 提交于 2019-11-27 20:34:31
thingsboard官网: https://thingsboard.io/ thingsboard GitHub : https://github.com/thingsboard/thingsboard thingsboard提供的体验地址: http://demo.thingsboard.io/ BY Thingsboard team 以下内容是在原文基础上演绎的译文。除非另行注明,页面上所有内容采用知识共享-署名( CC BY 2.5 AU )协议共享。 原文地址: ThingsBoard API参考: HTTP设备API HTTP 协议介绍 HTTP 是可用于IoT应用程序的通用网络协议。您可以 在此处 找到有关HTTP的更多信息。HTTP协议是基于TCP的,并使用请求 - 响应模型。当然它的缺点也极为明显,HTTP对于嵌入式设备来说太重了,也不灵活。 协议特点 支持客户/服务器模式。 简单快速: 客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、PUT、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因此通信速度很快。 灵活: HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求

调用API修改Ocelot的配置文件

放肆的年华 提交于 2019-11-27 17:32:26
Ocelot是一个基于.net core的开源webapi服务网关开源项目,功能比较强大,Github项目地址为: https://github.com/ThreeMammals/Ocelot ,关于Ocelot的学习资料可以看看张善友的网站: http://www.csharpkit.com/apigateway.html 。 Ocelot的路由设置是基于配置文件的,同样在Ocelot中使用Consul做服务发现时,也是基于配置文件,当我们修改路由或者需要往Consul中添加ServiceName的时候,需要修改配置文件,网关服务也需要重启,这当然不是我们想要的。 在张善友的帮助下,得知可以通过调用api的方式来修改Ocelot的配置文件,官方文档: https://ocelot.readthedocs.io/en/latest/features/administration.html ,本文以示例的方式来介绍怎样通过调用api的方式修改Ocelot的配置文件。 环境 .net core:2.1.4 Ocelot:6.0 IdentityServer4:2.2.0 准备 使用VS2017创建解决方案UpdateOcelotConfig,并添加三个项目: Client 控制台项目 添加Ocelot包引用 IdentityService WebAPI项目