本篇文章给大家谈谈http接口开发教程,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享http接口开发教程的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java开发接口利用http协议传输数据
5.1请求程序代码
public void sendMessage() throws Exception {
System.out.println("调用servlet开始=================");
StringBuffer sendStr = new StringBuffer();
sendStr.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?");
sendStr.append("<report_data");
sendStr.append("<request_req953943547334</request_req");
sendStr.append("<request_time2012040211394324</request_time");
sendStr.append("<request_param");
sendStr.append("<query_month201203</query_month");
sendStr.append("</request_param");
sendStr.append("</report_data");
BufferedReader reader = null;
try {
String strMessage = "";
StringBuffer buffer = new StringBuffer();
// 接报文的地址
URL uploadServlet = new URL(
"http://localhost:9090/TestTransfers");
HttpURLConnection servletConnection = (HttpURLConnection) uploadServlet
.openConnection();
// 设置连接参数
servletConnection.setRequestMethod("POST");
servletConnection.setDoOutput(true);
servletConnection.setDoInput(true);
servletConnection.setAllowUserInteraction(true);
// 开启流,写入XML数据
OutputStream output = servletConnection.getOutputStream();
System.out.println("发送的报文:");
System.out.println(sendStr.toString());
output.write(sendStr.toString().getBytes());
output.flush();
output.close();
// 获取返回的数据
InputStream inputStream = servletConnection.getInputStream();
reader = new BufferedReader(new InputStreamReader(inputStream));
while ((strMessage = reader.readLine()) != null) {
buffer.append(strMessage);
}
System.out.println("接收返回值:" + buffer);
} catch (java.net.ConnectException e) {
throw new Exception();
} finally {
if (reader != null) {
reader.close();
}
}
}
5.2响应程序代码
public class TestTransfers extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//判断请求报文是否来自代维系统的ip地址
String ip = request.getRemoteHost();
// 获取收到的报文
BufferedReader reader = request.getReader();
String line = "";
StringBuffer inputString = new StringBuffer();
while ((line = reader.readLine()) != null) {
inputString.append(line);
}
//如有必要,可以在报文中增加其他验证和加密的参数
//解析获取到的报文,根据ip地址、其他验证、加密等等来判断请求报文的服务器是否有权限
//如果请求验证合格,则根据请求的参数装配返回的报文
// 要返回的报文
StringBuffer resultBuffer = new StringBuffer();
resultBuffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?");
resultBuffer.append("<report_data");
resultBuffer.append("<respon_req953947334</respon_req");
resultBuffer.append("<respon_time20120402113943</respon_time");
resultBuffer.append("<result");
resultBuffer.append("<id0000</id");
resultBuffer.append("<comment成功</comment");
resultBuffer.append("</result");
resultBuffer.append("<items");
resultBuffer.append("<item");
resultBuffer.append("<county长治县</county");
resultBuffer.append("<company铁通</company");
resultBuffer.append("<speciality线路</speciality");
resultBuffer.append("<personnel王加和</personnel");
resultBuffer.append("<begin_time20120301000000</begin_time");
resultBuffer.append("<end_time20120331235959</end_time");
resultBuffer.append("<plan_quantity50</plan_quantity");
resultBuffer.append("<checkout_quantity40</checkout_quantity");
resultBuffer.append("<patrol_rate0.80</patrol_rate");
resultBuffer.append("</item");
//......
//......
//......
//循环组装响应的报文
resultBuffer.append("</items");
resultBuffer.append("</report_data");
// 设置发送报文的格式
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println(resultBuffer.toString());
out.flush();
out.close();
}
}
magic-api 快速接口开发
magic-api 是一个基于Java的接口快速开发框架
http接口开发教程,编写接口将通过magic-api提供的UI界面完成
http接口开发教程,自动映射为HTTP接口。
1,引入magic-api-spring-boot-starter依赖
org.ssssssss
magic-api-spring-boot-starter
1.7.1
2,application.yml 中配置
magic-api:
#配置web页面入口
web: /magic/web
resource:
# location: /data/magic-api
type: database # 配置接口存储方式,这里选择存在数据库中
table-name: magic_api_file # 数据库中的表名
3,启动服务,访问magic-api web页面
magic-test/magic/web
1,RequestParam
GET http://localhost:9999/xxx/xxx?name=abcage=49
这样的URL参数magic-api 会自动将name和age映射为同名变量
2,表单参数
POST http://localhost:9999/xxx/xxx
name=abcage=49
这样的表单参数magic-api 也会自动将name和age映射为同名变量。
3,Request Header参数获取
magic-api 会对所有RequestHeader统一封装为一个名为header的变量 如要获取 token 可以通过header.token 来获取。
4,POST请求的Request Body参数获取
{
"name": "magic-api"
}
如要获取name属性 则可通过 body.name 来获取
5,Path参数获取
主要是针对URL定义为http://localhost:9999/user/{id} 的类似接口
如要获取path路径上的id可通过path.id 或 id来获取
6,Cookie,Session参数获取
可以通过cookie.xxx,session.xxx来获取
1,#{} 注入参数,${} 拼接参数
作用和mybatis用法一致
id = #{id};
id=${id};
2,动态SQL参数
通过?{condition,expression}来实现动态拼接SQL,如果条件成立则拼接后部分内容SQL中,与mybatis中的if标签基本一致
return db.select("select * from sys_user ?{id,where id = #{id}}");
相当于mybatis中的
3,Mybatis 语法支持
1.6.0以后的版本支持Mybatis语法
操作入口 db.table('table_name')
1,insert
return db.table('sys_user').insert({ user_name : '李富贵', role : 'admin'})
// insert into sys_user(user_name,role) values('李富贵','admin')
2,update
return db.table('base_dict').primary('code').update({ code: 'insertTerst', name : '测试insert'})
//update base_dict set name = ? where code = ?
3,save
用法和insert相似
return db.table('sys_user').primary('id', uuid()).save({user_name: '李富贵'});
// insert into sys_user(id,user_name) values('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','李富贵');
4,select,page,where
return db.table('sys_user').select()
return db.table('sys_user').page()
return db.table('sys_user')
.where()
.like('user_name','%李富贵%')
.eq('role','admin')
.select()
yml中配置分页参数
magic-api:
page-config:
size: size # 页大小的请求参数名称
page: page # 页码的请求参数名称
default-page: 1 # 未传页码时的默认首页
default-size: 10 # 未传页大小时的默认页大小
自动分页
使用yml中配置的分页参数
return db.page("""select * from base_dict_detail""")
手动分页
跳过前3条记录,然后取5条
return db.page("""select * from base_dict_detail""",5,3)
自定义分页参数获取
实现 PageProvider接口,复写getPage方法 {
public Page getPage(RuntimeContext runtimeContext) {
long page = 2;
long pageSize = 3;
return new Page(pageSize, (page - 1) * pageSize);
}
此模式会覆盖yml的配置内容
目前内置了三种状态码,分别为 执行成功(1),参数验证失败(0),以及系统异常(-1)
自定义状态码
magic-api:
response-code-config:
success: 200 #执行成功的code值
invalid: 400 #参数验证未通过的code值
exception: 500 #执行出现异常的code值
默认返回格式
{
"code": 1, // 状态码
"message": "success", // 状态说明
"data": ..., // 返回的数据内容
"timestamp": 1629610503506, // 服务器时间
"executeTime": 1 // 执行时间
}
自定义返回格式
magic-api:
response: |- #配置JSON格式,格式为magic-script中的表达式
{
code: code,
message: message,
data,
timestamp,
requestTime,
executeTime,
}
自定义结构配置
实现ResultProvider接口,重写buildResult方法
引入swagger依赖
在yml文件中配置
magic-api:
swagger-config:
version: 1.0.0
description: magic测试文档
title: magic测试
name: 配置化实现
location: /v2/api-docs/magic-api/swagger2.json
Magic-api通过springboot自动配置的方式配置了resource,dataSource,interceptor等内容。
在服务启动时,生成MagicConfiguration注入容器时,通过mappingHandlerMapping.registerAllMapping();来注册所有映射(即在界面上配置的接口请求地址和接口的实际处理类、方法的映射)。映射关系注册到handleMapping中,并在内存中通过ConcurrentHashMap来缓存映射关系
接口调用时,在DispatcherServlet中通过url去寻找handler,找到magic-api的统一处理RequestHandler以及处理方法invoke。
在invoke中根据请求方法和路径获取接口信息封装在ApiInfo中,然后进行参数的验证封装。实际脚本的执行,以及对返回结果的包装
电脑培训分享软件开发接口测试的常见问题
对于一款程序来说,接口除http接口开发教程了有对接外部http接口开发教程的以外同时还有对程序内部http接口开发教程的接口,下面电脑培训http://www.kmbdqn.com/就一起来了解一下,关于软件开发接口测试的常见问题。
一、常见接口http接口开发教程:
1、webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;
2、httpapi接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;
二、前端和后端:
在说接口测试之前,我们先来搞清楚这两个概念,前端和后端。
前端是什么呢,对于web端来说,咱们使用的网页,打开的网站,这都是前端,这些都是html、css写的;对于app端来说呢,它就是咱们用的app,android或者object-C(开发ios上的app)开发的,它的作用就是显示页面,让我们看到漂亮的页面,以及做一些简单的校验,比如说非空校验,咱们在页面上操作的时候,这些业务逻辑、功能,比如说你购物,发微博这些功能是由后端来实现的,后端去控制你购物的时候扣你的余额,发微博发到哪个账号下面,那前端和后端是怎么交互的呢,就是通过接口。
前面说的你可能不好理解,你只需记住:前端负责貌美如花,后端负责挣钱养家。
三、什么是接口测试:
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
关于http接口开发教程和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
http接口开发教程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、http接口开发教程的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~