做一个网站调用外部接口需要数据库嘛

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了做一个网站调用外部接口需要数据库嘛相关的知识,希望对你有一定的参考价值。

参考技术A 需要。有的接口会返回很多数据,有的接口可能就返回一个状态码及success之类的消息,这些需要验证数据库么?
现在在写一个测试框架,配置接口参数和预期返回值,生成xml文件管理用例,用一个比较方法对预期和返回作比较,不需要根据每个接口写脚本,现在的疑惑只之比较返回值,并不清楚接口是否真的成功了,比如删除之类的接口,返回说成功了,但数据是否真的删除了?如果要验证数据库,感觉得为每个用例写脚本去验证了,这就和初衷不符(只写个比较函数,比较返回的所有值,不需要为每个接口单独验证)

各位java大神,小弟跪求一个解决的方案:调用外部接口得到返回值--耗时问题

目前遇到的问题是这样的:我取出一个LIst集合,每一条数据构建成一个参数去调用一个外部接口,但是得到接口返回值需要耗时,比如10秒,要是List有上万条数据,那一次循环完得多少个小时了,求怎么解决啊 ,下面是我的伪代码:
For (int i =0;i<list.size();i++)

string returnstr = getResult();//调用外部接口得到返回值,这里可能耗时(比如10秒);
updateDate(returnstr).//根据返回值更新数据库的数据


这样下来得好长时间啊 ,用什么方式解决好呢,求给设计代码啊,小弟跪求,我的分数全给了,大神帮帮啊
用到的技术我也了解 ,关键是不知道怎么用,求代码啊 ,谢谢大侠了

参考技术A 不知道你用的什么语言编写的,但一定有获取系统时间的方法或函数吧?
java中可以这样
long start = Calendar.getInstance().getTime().getTime();
string returnstr = getResult();//调用外部接口得到返回值,这里可能耗时(比如10秒);

long end= Calendar.getInstance().getTime().getTime();
long time = end-start;//这里是毫秒数,根据自己需要转换一下吧

updateDate(returnstr).//根据返回值更新数据库的数据

先看看到底需要多长时间,话说是不是java实现的啊?追问

嗯,就是java实现,能给伪代码吗,谢了,用什么技术呢

追答

先写一个处理线程

package org.zcm.run;
public class MyRequestThread implements Runnable
//构造函数,传入请求路径或者参数,只要满足你的请求条件就行
private String param;
public MyRequestThread(String p)
param = p;


public void run()
String returnstr = getResult(param);//调用外部接口得到返回值,这里可能耗时(比如10秒);
updateDate(returnstr);//根据返回值更新数据库的数据

public String getResult(String param)
//这里写请求的方法,用connect或者client都可以
//这里如果请求比较复杂,或者要求比较严谨的话,建议用httpclient
String req = new String();
return req;

//这个方法要怎么实现你懂的
private void updateDate(String returnstr)
// TODO Auto-generated method stub




大概就是这样了。

然后循环调用
为了线程安全,可以用一些线程池来管理。
public class ListOperate

public static void main(String[] args)
//建立线程池
ExecutorService pool = Executors.newSingleThreadExecutor();
//测试数据
List params = new ArrayList();
params.add("1");
params.add("2");

for(String p:params)
Thread reqThread = new Thread(new MyRequestThread(p));
pool.execute(reqThread);

pool.shutdown();



还有别的线程池,用法查查就有了

参考技术B 多线程并发,使用线程池管理 参考技术C 必须使用多线程了 必须的

以上是关于做一个网站调用外部接口需要数据库嘛的主要内容,如果未能解决你的问题,请参考以下文章

webservice接口如何获取网站数据

关于网站接口管理OAuth登录。

接口调用外部系统返回数据,本系统做数据分页封装

一个服务器能作多个网站嘛!

支付宝——手机网站支付接口研究

基于java高德天气的接口调用