接口接入方式如何配置
2023-03-02 10:22:09 0 举报
AI智能生成
1
作者其他创作
大纲/内容
基础知识
http
是什么?
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
包含什么?
HTTP 协议的请求报文和响应报文基本相同,由三大部分组成
起始行(start line):描述请求和响应的基本信息;
请求方法:如 GET、POST,表示对资源的操作;
GET:获取资源,请求访问已被URI识别的资源。
POST:POST和GET的方法很相似,但是其主要目的是传输实体,也就是用于传递大量数据至服务器的方法
请求目标:通常是一个 URI,标记了请求方法要操作的资源;
版本号:表示报文使用的 HTTP 协议版本。
头部字段集合(header):使用 key-value 形式更详细的说明报文;
请求行或状态行再加上头部字段集合就构成了 HTTP 报文里完整的请求头或响应头。
头部字段是 key-value 的形式,key 和 value 之间用“:”分隔,最后用 CRLF 换行表示字段结束。
HTTP 头字段非常灵活,不仅可以使用标准里的 Host、Connection 等已有头,还可以任意添加自定义头,这给 HTTP 协议带来了无限拓展可能。
消息正文(entity):实际传输的数据,可以是文本、图片、视频等。
有那些例子?
webservice
是什么?
1. webservice 即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术。
Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
2. JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。
JAX-WS(Java API For XML-WebService)
JAXM(JAVA API For XML Message)
JAX-RS
3. webService三要素:soap、wsdl、uddi
包含什么?
SOAP 协议
1.SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML(标准通用标记语言下的一个子集)编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。
2.SOAP作为一个基于XML语言的协议用于有网上传输数据。
3.SOAP = 在HTTP的基础上+XML数据。
4.SOAP是基于HTTP的。
5.SOAP的组成如下
a) Envelope – 必须的部分。以XML的根元素出现。
b) Headers – 可选的。
c) Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。
wsdl说明书
Web Service描述语言WSDL(SebService Definition Language)就是用机器能阅读的方式提供的一个正式描述文档而基于XML(标准通用标记语言下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
1.通过wsdl说明书,就可以描述webservice服务端对外发布的服务;
2.wsdl说明书是一个基于xml文件,通过xml语言描述整个服务;
3.在wsdl说明中,描述了:
a.对外发布的服务名称(类)
b.接口方法名称(方法)
c.接口参数(方法参数)
d.服务返回的数据类型(方法返回值)
2.wsdl说明书是一个基于xml文件,通过xml语言描述整个服务;
3.在wsdl说明中,描述了:
a.对外发布的服务名称(类)
b.接口方法名称(方法)
c.接口参数(方法参数)
d.服务返回的数据类型(方法返回值)
uddi
UDDI 是一种目录服务,企业可以通过 UDDI 来注册和搜索 Web 服务,目前业务不涉及
有那些例子?
进阶使用
http
拿到接口文档怎么看懂文档?
找那些关键信息
请求方式
post/get
请求地址
url
请求头
header
请求格式
是否压缩
是否保持长链接
请求参数
具体表现为参数是否需要拼接到url地址后
请求体
body
使用什么工具怎么调通接口?
使用postman配置接口
post
webservice
拿到接口文档怎么看懂文档?
找那些关键信息
请求方式
默认post
请求地址
url
请求头
header
请求格式
是否保持长链接
请求体
提取完整的请求内容
使用什么工具怎么调通接口?
使用soapui配置接口调用
请求方式默认post
高级进阶
http
看懂文档如何配置?
基础配置
url,header,body
使用中台功能如何满足线上各种情况的实施操作
业务一
时间范围获取病人信息
接口1,通过starttime,endtime获取时间范围内的病人信息
页面配置样例
业务二
第三方接口存在校验,时间范围获取病人信息
接口1,获取requestid(纪录id或者校验id,且只能使用一次)信息
页面配置样例1:只获取一次requestid
页面配置样例1:病人信息个数只获取同等数量requestid
接口2,通过requestid,starttime,endtime获取时间范围内的病人信息
页面配置样例
业务三
第三方接口存在数据传输限制(返回数据只能是100kb以下数据),获取某段时间范围内的病人费用信息
接口1,时间范围获取病人费用信息(且一次获取两天或者三天数据)
页面配置样例
业务四
第三方接口存在数据传输限制(返回数据只能是100kb以下数据),获取某段时间范围内的病人费用信息
接口1,时间范围获取病人信息(如果病人信息已经落到本地数据库可以忽略)
页面配置样例
接口2,通过pid获取病人费用信息
页面配置样例
业务五
通过pid获取费用信息,接口数据最大返回5000条,接口支持翻页,单个病人的费用信息存在超过5000条情况,pagesize,pageno
接口1,时间范围获取病人信息(如果病人信息已经落到本地数据库可以忽略)
页面配置样例
接口2,通过pid,pagesize,pageno获取病人费用信息
页面配置样例
SQL:SELECT t1.pid,t2.pageno,t2.pagesize FROM (SELECT t.pid ,rownum as num FROM hdc_ods.get_patient_info t ) t1 join (select level as pageno,5000 as pagesize from dual connect by level <= 2) t2 on 1=1
webservice
看懂文档如何配置?
基础配置
url,header,body
使用中台功能如何满足线上各种情况的实施操作
业务一
时间范围获取病人信息
接口1,通过starttime,endtime获取时间范围内的病人信息
页面配置样例
SQL配置解读
create table hdc_ods.time_tmp_table as select * from table(out_time_funtion(date'2021-01-01',date'2021-05-31',2,'yyyy-mm-dd'));selecta.start_time,a.end_time from hdc_ods.time_tmp_table a
create table hdc_ods.time_tmp_table as select * from table(out_time_funtion(date'2021-01-01',date'2021-05-31',2,'yyyy-mm-dd'));selecta.start_time,a.end_time from hdc_ods.time_tmp_table a
create table hdc_ods.time_tmp_table as select * from table(out_time_funtion(date'2021-01-01',date'2021-05-31',2,'yyyy-mm-dd'));
创建临时的时间数据表,关联主表进行数据展示,time_tmp_table名称为固定占位 执行时会进行名称替换,不需要考虑是否会存在数据不一致问题
创建临时的时间数据表,关联主表进行数据展示,time_tmp_table名称为固定占位 执行时会进行名称替换,不需要考虑是否会存在数据不一致问题
selecta.start_time,a.end_time from hdc_ods.time_tmp_table a
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
业务二
第三方接口存在校验,时间范围获取病人信息
接口1,获取requestid(纪录id或者校验id,且只能使用一次)信息
页面配置样例1:只获取一次requestid
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:GetRequestId>
<!--Optional:用户编码-->
<tem:UserCode>B001</tem:UserCode>
<!--Optional:用户密码-->
<tem:UserPassWord>NEBxqF/MYh7dyZIRMraurw==</tem:UserPassWord>
</tem:GetRequestId>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<tem:GetRequestId>
<!--Optional:用户编码-->
<tem:UserCode>B001</tem:UserCode>
<!--Optional:用户密码-->
<tem:UserPassWord>NEBxqF/MYh7dyZIRMraurw==</tem:UserPassWord>
</tem:GetRequestId>
</soapenv:Body>
</soapenv:Envelope>
页面配置样例2:病人信息个数只获取同等数量requestid
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:GetRequestId>
<!--Optional:用户编码-->
<tem:UserCode>B001</tem:UserCode>
<!--Optional:用户密码-->
<tem:UserPassWord>NEBxqF/MYh7dyZIRMraurw==</tem:UserPassWord>
</tem:GetRequestId>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<tem:GetRequestId>
<!--Optional:用户编码-->
<tem:UserCode>B001</tem:UserCode>
<!--Optional:用户密码-->
<tem:UserPassWord>NEBxqF/MYh7dyZIRMraurw==</tem:UserPassWord>
</tem:GetRequestId>
</soapenv:Body>
</soapenv:Envelope>
SQL配置解读 利用病人信息表循环访问同等数量对方接口次数
SELECT rownum as num FROM hdc_ods.get_patient t where rownum <= 100
SELECT rownum as num FROM hdc_ods.get_patient t where rownum <= 100
接口2,通过requestid,starttime,endtime获取时间范围内的病人信息
页面配置样例
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:requestid-->
<RequestId>${requestid}</RequestId>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:requestid-->
<RequestId>${requestid}</RequestId>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
SQL:create table hdc_ods.time_tmp_table as select * from table(out_time_funtion(date'2021-01-01',date'2021-05-31',2,'yyyy-mm-dd'));select requstid,a.start_time,a.end_time from get_requestid join hdc_ods.time_tmp_table a on 1=1
业务三
第三方接口存在数据传输限制(返回数据只能是100kb以下数据),获取某段时间范围内的病人费用信息
接口1,时间范围获取病人费用信息(且一次获取两天或者三天数据)
页面配置样例1
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
页面配置样例2
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
查询SQL配置
业务四
第三方接口存在数据传输限制(返回数据只能是100kb以下数据),获取某段时间范围内的病人费用信息
接口1,时间范围获取病人信息(如果病人信息已经落到本地数据库可以忽略)
页面配置样例
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
接口2,通过pid获取病人费用信息
页面配置样例
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:pid-->
<Pid>${pid}</Pid>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:pid-->
<Pid>${pid}</Pid>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
SQL配置: select a.pid,a.end_time from hdc_ods.get_patients a
业务五
通过pid获取费用信息,接口数据最大返回5000条,接口支持翻页,单个病人的费用信息存在超过5000条情况,pagesize,pageno
接口1,时间范围获取病人信息(如果病人信息已经落到本地数据库可以忽略)
页面配置样例
请求体配置
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:开始时间-->
<StartTime>${start_time}</StartTime>
<!--Optional:结束时间-->
<EndTime>${end_time}</EndTime>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
接口2,通过pid,pagesize,pageno获取病人费用信息
页面配置样例
请求体配置:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:pid-->
<Pid>${pid}</Pid>
<Pageno>${pageno}</Pageno>
<Pagesize>${pagesize}</Pagesize>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<GetPatient>
<!--Optional:pid-->
<Pid>${pid}</Pid>
<Pageno>${pageno}</Pageno>
<Pagesize>${pagesize}</Pagesize>
</GetPatient>
</soapenv:Body>
</soapenv:Envelope>
SQL配置:
SELECT t1.pid,t2.pageno,t2.pagesize FROM (SELECT t.pid ,rownum as num FROM hdc_ods.get_patient t ) t1 join (select level as pageno,5000 as pagesize from dual connect by level <= 2) t2 on 1=1 order by t1.pid
收藏
0 条评论
下一页