Http接口开发以及异常调试
目录
- 接口种类
- 什么是接口
- http接口类型
- 应用实例
- 发布接口
- 请求接口
- 调试接口
- 常见异常问题解决
- 413异常
- 使用HttpClient出现java.io.IOException: Attempted read from closed stream
接口种类
webservice接口、HTTP接口(SSL认证)、RPC接口
什么是接口
接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。
http接口类型
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
方法 | 描述 |
---|---|
GET | 请求指定 页面信息,并返回实体主题 |
HEAD | 向服务器索要与GET请求相一致的响应,只不过响应体不会被返回,这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件) |
PUT | 向指定资源位置上传其最新内容, 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除Request-URI所标识的资源,也就是删除所指定的页面 |
CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
OPTIONS | 返回服务器针对特定资源所支持的http请求方法,允许客户端查看服务器的性能 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
应用实例
发布接口
SpringBoot发布接口
@PostMapping
客户端只能用 POST方式请求,适用于提交数据。
@GetMapping
客户端只能用 GET 方式请求,适用于查询数据
@DeleteMapping
客户端只能用 DELETE方式请求,使用于删除数据
@PutMapping
客户端只能用 PUT方式请求,使用于修改数据
请求接口
post请求public static boolean doPost(String url, xxxx, xxxxx) throws ClientProtocolException, IOException {LOGGER.info("{}" + url);CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);httpPost.setHeader("Content-Type", "application/json");JSONObject json = new JSONObject();json.put("key1", xxx);json.put("key2", xxx);StringEntity httpEntity = new StringEntity(json.toJSONString(), StandardCharsets.UTF_8);httpPost.setEntity((HttpEntity)httpEntity);CloseableHttpResponse closeableHttpResponse = httpClient.execute((HttpUriRequest)httpPost);int statusCode = closeableHttpResponse.getStatusLine().getStatusCode();if (statusCode != 200) {LOGGER.error("{}" + statusCode);return false;} LOGGER.info(");return true;}get请求public static Boolean doGet(String url, xxxxxxx) throws ClientProtocolException, IOException {LOGGER.info("{}" + url);CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);httpPost.setHeader("Content-Type", "application/json");JSONObject json = new JSONObject();json.put("key1", xxx);json.put("key2", xxx);json.put("key3", xxx);StringEntity httpEntity = new StringEntity(json.toJSONString(), StandardCharsets.UTF_8);httpPost.setEntity((HttpEntity)httpEntity);CloseableHttpResponse closeableHttpResponse = httpClient.execute((HttpUriRequest)httpPost);int statusCode = closeableHttpResponse.getStatusLine().getStatusCode();if (statusCode != 200) {LOGGER.error("{}" + statusCode);return Boolean.valueOf(false);} LOGGER.info("");return Boolean.valueOf(true);}
JS接口请求
$.ajax({url:"http://www.microsoft.com", //请求的url地址dataType:"json", //返回格式为jsonasync:true,//请求是否异步,默认为异步,这也是ajax重要特性data:{"id":"value"}, //参数值type:"POST", //请求方式 get、postbeforeSend:function(){//请求前的处理},success:function(req){//请求成功时处理},complete:function(){//请求完成的处理},error:function(){//请求出错处理}
});
调试接口
可以用过工具postMan、页面请求
常见异常问题解决
413异常
客户端请求体过大,造成请求容量异常
1、需要设置nginx中的客户端属性大小:【client_max_body_size 10m】
2、F5转发就需要设置
3、可以后台分流发送数据
使用HttpClient出现java.io.IOException: Attempted read from closed stream
1、流数据只能使用一次,多次验证可以使用变量接受。
Http接口开发以及异常调试相关推荐
- java接口开发 全局异常,全局异常处理
习惯在controller中进行try catch 异常处理了,但其实如果不做异常处理的话,也可以采取全局异常处理的方式进行解决,同样方便统一使用.维护,具体实现如下: import javax.se ...
- TP5_接口开发之全局异常控制
前言: 说到异常控制,也许很多会比较陌生,我身边很少人会去写抛异常的代码.但是异常用好了是非常的方便大家开发.首先我们来回顾下哪里可以看到异常,首先我们用框架开发的时候,我们的代码出错或者别的东西.如 ...
- 关于接口使用抛异常还是返回错误码,下列哪些说法符合《阿里巴巴Java开发手册》
关于接口使用抛异常还是返回错误码,下列哪些说法符合<阿里巴巴Java开发手册>:答案在文末 A. 向公司外部提供的http/api接口,推荐使用"错误码"方式返回异常或 ...
- [ecshop 支付接口 开发调试] ecshop 需要做一些支付接口,和接口升级,经常需要支付返回
[ecshop 支付接口 开发调试] ecshop 需要做一些支付接口,和接口升级,经常需要支付返回 1.经验1 直接建立一个支付页面 /** * ecshop 支付接口开发 测试 * ======= ...
- 微信公众平台卡券API接口开发指南
文章目录 说明 卡券术语介绍 卡券生命周期流程图 准备 申请开发账号 公众平台开发配置 公众号开发信息配置 填写服务器配置并验证有效性 申请微信认证及开通微信卡券功能 卡券分类 普通卡券 会员卡券 朋 ...
- Django rest_framework 后端接口开发 开发与用户相关的一组接口 登录注册与用户信息查询修改
Django rest_framework 后端接口开发 开发与用户相关的一组接口 Django DRF框架用起来还是有一些难度的,需要做的配置,需要导的包很多,所以需要多多练习才能掌握它的使用.此文 ...
- 接口快速复制到 Postman 接口快速修改参数调试
文章目录 接口快速复制到 Postman && 接口快速修改参数调试 前言 背景 此文章可以解决什么问题 如何使用 接口快速复制到 Postman 采用 Console 快速调试 使用 ...
- 公众号php支付接口开发,公众号支付接口的开发
这次给大家带来公众号支付接口的开发,公众号支付接口开发的注意事项有哪些,下面就是实战案例,一起来看一下. 公众号支付就是在微信里面的H5页面唤起微信支付,不用扫码即可付款的功能.做这个功能首先要明确的 ...
- 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,
第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...
- PHP 接口开发注意事项
PHP 接口开发注意事项 PHP 接口开发注意事项 预先定义接口流程和逻辑,确认需求 在开发前首先确定流程,复杂的接口可以绘制流程图,并确保流程与需求一致: 使用统一的变量定义 无论是SDK还是Ser ...
最新文章
- C++中#include的工作原理
- ExtJS4 API文档阅读(四)——Data
- PC端设置每行固定三个元素多余换行
- 一文读懂RPA与BPM的区别和联系
- 关于openstack 专业博主地址.后续更新
- 使用SharedPreferences存储和读取数据
- maven spring hibernate shiro
- java版b2b2c社交电商spring cloud分布式微服务-服务提供与调用
- Python日志保存 -- print内容输出到txt文件、nohup时的输出保存
- linux安装数据库yum,linux 安装mysql数据库——yum安装法
- 【元胞自动机】基于matlab元胞自动机城市规划【含Matlab源码 125期】
- 期末前端web大作业——基于HTML当当图书网项目的设计与实现 网上书城 网上书店 在线书店网页
- 618网购盛宴即将开启,云联络中心+AI成为电商的“新基建”
- Python+matplotlib绘制地图
- Linux中jsoncpp的编译使用
- M1芯片处理器mac能用的AI(llustrator CC 2021 直装版M1优化版)解决M1版MAC安装AI闪退问题 完美支持M1芯片处理器
- 数千亿“颜值经济”蓝海里,买单的究竟是哪些人?
- 4. “强人”的“皮球”生涯
- iPhone 将被迫换成 USB-C 接口?苹果,你可怎么办啊......
- shell 字符串比较
热门文章
- Python批量压缩图片(TinyPNG)
- wireshark 安装失败报错,缺少kb2999226补丁的解决方案
- 用python算股票月涨幅_「」股票产品 python-如何选取过去每个月股票的市值 python-TOP金融网...
- freebsd协议栈学习
- Html制作简单而漂亮的登录页面-web前端教程
- javascript前端导出Excel简单写法
- 银行对公账户编码规则
- 使用JMeter测试post请求
- l440加装固态硬盘ngff_[转载]Thinkpad E431装NGFF固态硬盘图文详解
- Samsung NVM Express Driver(三星nvme固态驱动)v3.1官方版