API 设计/开发/测试工具:Apifox与怎么通过拦截器

目录

一、测试接口如何创建?

二、如何添加body和header?

三、如果项目设置的有拦截器?

四、拦截器概念:

4.1使用拦截器概念

4.2 先写一个配置类WebMvcConfig.java

4.3 AuthInitInterceptor拦截器中实现


一、测试接口如何创建?

 微信小程序端的接口:

所以微信小程序 会传的参数是json格式

现在前端还没写好,先把api定义好,我负责写后端代码

使用如下的

 测试接口的工具

Apifox - API 文档、调试、Mock、测试一体化协作平台 - 接口文档工具,接口自动化测试工具,接口Mock工具,API文档工具,API Mock工具,API自动化测试工具

新建项目、创建一个接口 

 

 要添加浏览器扩展,不然没法用

二、如何添加body和header?

 

GET请求:select方法

POST请求:insert方法

PUT请求:update方法

DELETE请求:删除方法

 get请求填写Params

 

put请求填写body如下:

 要选择json格式

 测试的是如下Controller层

@PutMapping("/{id}/house")定义的路径

三、如果项目设置的有拦截器?

例如header必须携带token的 ,需要设置如下


四、拦截器概念:

怎么设置访问请求要包含自定义的token?

4.1使用拦截器概念

在springMVC中是通过配置xml文件实现的拦截

如下文章:

CRM-拦截器_crm拦截器_素心如月桠的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_47010003/article/details/124887090下面这篇是拦截的源码解析【可不看】

Interceptor拦截器的源码解析:自定义Mybatis拦截器与Plugin_java 拦截器中的plugin_素心如月桠的博客-CSDN博客上一篇:Mybatis,动态代理CRUD源码分析上一篇中的Mybatis底层的四个处理器:StatementHandler 、ParameterHandler、ResultSetHandler、 TypeHandler插件也涉及到4个核心对象:StatementHandler 、ParameterHandler、ResultSetHandler、Executor回顾mybatis动态代理对象进行增删改查操作 mapper.queryStudentById()方法添加断点,调试进入方法内部调用了invoke(_java 拦截器中的pluginhttps://blog.csdn.net/m0_47010003/article/details/127347305看完第一篇就应该理解如何去自定义一个拦截器,也就是实现接口

implements HandlerInterceptor{
preHandle();
postHandle();
afterCompletion();
}

 然后去重写上面的3个方法

主要是写preHandle()方法,在进行增删改查等在handler之前执行

在springboot项目中添加拦截器的方式是添加注解就行,不用配置

4.2 先写一个配置类WebMvcConfig.java

WebMvcConfig

@Configuration注解的作用:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象。

 把拦截器AuthInitInterceptor 引入,要添加@Resource注解

如下:

package com.huashang.config;import javax.annotation.Resource;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;import com.huashang.interceptor.AuthInitInterceptor;
import com.huashang.interceptor.CrossInterceptor;
import com.huashang.interceptor.SameUrlDataInterceptor;@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {@Resourceprivate AuthInitInterceptor authInitInterceptor;@Resourceprivate CrossInterceptor crossInterceptor;@Resourceprivate SameUrlDataInterceptor sameUrlDataInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(crossInterceptor).addPathPatterns("/**");registry.addInterceptor(authInitInterceptor);registry.addInterceptor(sameUrlDataInterceptor);registry.addInterceptor(localeChangeInterceptor());}public LocaleChangeInterceptor localeChangeInterceptor() {LocaleChangeInterceptor lci = new LocaleChangeInterceptor();// 参数名lci.setParamName("lang");return lci;}}

4.3 AuthInitInterceptor拦截器中实现

preHandle方法添加代码如下:

 

看根据token能不能查到数据

所以我刚刚给我的测试接口,请求头中添加了一个token的参数为数据库中的1234321

可以看到200请求成功了 

拦截器代码如下:

package com.huashang.interceptor;import java.io.IOException;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import com.huashang.domain.user.entity.User;
import com.huashang.service.IUserService;
import com.huashang.util.StringUtil;@Component("authInitInterceptor")
public class AuthInitInterceptor implements HandlerInterceptor{@Resourceprivate IUserService userService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {if(ignoreAuth(request)){return true;}User currentUser;String token = request.getHeader("token");if(StringUtil.stringBlank(token)){authFail(response);return false;}currentUser = userService.loginByToken(token);if(currentUser == null){authFail(response);return false;}request.setAttribute("currentUser", currentUser);return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// do nothing}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {request.setAttribute("currentUser", null);}private void authFail(HttpServletResponse response) throws IOException{response.setHeader("content-type", "application/json");response.setStatus(401);response.getWriter().write("{\"error\": \"auth error\"}");}private boolean ignoreAuth(HttpServletRequest request) {return request.getMethod().equalsIgnoreCase("options")|| request.getRequestURI().contains("/users/login")|| request.getRequestURI().contains("/users/token")|| request.getRequestURI().contains("/error");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144598.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构:简单记录顺序表、链表、栈、队列

初学者很容易认为顺序表、链表、栈、队列是四种并列的数据结构,其实仔细想想并不是。 注意区分: 顺序表和链表是指数据的存储结构,是线性表的一种,顺序表一般指的就是数组,数据存储的逻辑顺序和物理顺序都是连续的&a…

【图像处理】SIFT角点特征提取原理

一、说明 提起在OpenCV中的特征点提取,可以列出Harris,可以使用SIFT算法或SURF算法来检测图像中的角特征点。本篇围绕sift的特征点提取,只是管中窥豹,而更多的特征点算法有: Harris & Stephens / Shi–Tomasi 角点…

支付宝电脑网站支付,异步通知

一:异步通知是支付宝回调商户的服务器,所以这个地址需要通过外网访问,在真实项目中都会有对应的服务器,但是在测试中只有使用内网穿透工具 推荐使用NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 配置好内网穿透之后不要忘记…

CIP或者EtherNET/IP中的PATH是什么含义?

目录 SegmentPATH举例 最近在学习EtherNET/IP,PATH不太明白,翻了翻规范,在这里记个笔记。下面的叙述可能是中英混合,有一些是规范中的原文我直接搬过来的。我翻译的不准确。 Segment PATH是CIP Segment中的一个分类。要了解PATH…

PHP8的继承和多态-PHP8知识详解

我们在前面的时候讲过《面向对象编程的特点》时,面向对象编程具有3大特点:封装性、继承性和多态性。 继承和多态的根本作用就是完成代码的重用。下面就来讲解php8的继承和多态。 1继承 子类可以继承父类的所有成员变量和成员方法,包括构造方…

数据集笔记: Porto

数据来源:Taxi Trajectory Data_数据集-阿里云天池 (aliyun.com) 1 数据介绍 葡萄牙波尔图市运行的所有442辆出租车的全年轨迹(从2013年7月1日至2014年6月30日) 2 读取数据 import pandas as pdtrapd.read_csv(C:/Users/16000/Download…

【EasyExcel】excel表格的导入和导出

【EasyExcel】excel表格的导入和导出 【一】EasyExcel简介【二】EasyExcel使用【1】EasyExcel相关依赖【2】写Excel(1)最简单的写(方式一)(2)最简单的写(方式二)(3)排除模型中的属性字段(4&…

Springboot对MVC、tomcat扩展配置

Springboot在web层的开发基本都是采用Springmvc框架技术,但是Springmvc中的某些配置在boot是没有的,我们就应该根据自己的需求进行对mvc扩展配置 Springboot1.x版本如何配置 通过注解Configuration一个类,继承webmvcconfigureradapter&#…

Bootstrap的弹性盒子布局学习笔记

Bootstrap的弹性盒子布局学习笔记 目录 01-综述02-利用类d-flex与类d-inline-flex将容器定义为弹性盒子03-对弹性容器的的元素在水平方向上进行排列顺序设置03-对弹性容器的的元素在垂直方向上进行排列顺序设置04-弹性盒子内所有元素在主轴方向上的对齐方式05-1-弹性盒子内各行…

C#生成自定义海报

安装包 SixLabors.ImageSharp.Drawing 2.0 需要的字体:宋体和微软雅黑 商用的需要授权如果商业使用可以使用方正书宋、方正黑体,他们可以免费商用 方正官网 代码 using SixLabors.Fonts; using SixLabors.ImageSharp; using SixLabors.ImageSharp.Draw…

redis-设置从节点

节点结构 节点配置文件 主节点 不变 6380节点 port 6380 slaveof 127.0.0.1 63796381节点 port 6381 slaveof 127.0.0.1 6380启动 指定配置文件的方式启动 D:\jiqun\redis\Redis-6380>redis-server.exe redis.windows.conf启动时,会触发同步数据命令 主节点…

安装ipfs-swarm-key-gen

安装ipfs-swarm-key-gen Linux安装go解释器安装ipfs-swarm-key-gen Linux安装go解释器 https://blog.csdn.net/omaidb/article/details/133180749 安装ipfs-swarm-key-gen # 编译ipfs-swarm-key-gen二进制文件 go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm…

insightface实战:画出嘴巴和眼睛的mask

今天的目标是将人脸的嘴巴和眼睛区域抠出来,使用insightface简单实现出来,为了方便批量使用多进程跑数据,使用多进程的方式,下面是代码: import os import cv2 from multiprocessing import Pool import numpy as n…

Visual Studio 2019 C# winform CefSharp 中播放视频及全屏播放

VS C# winform CefSharp 浏览器控件,默认不支持视频播放,好在有大佬魔改了dll,支持流媒体视频播放。虽然找了很久,好歹还是找到了一个版本100.0.230的dll(资源放在文末) 首先创建一个项目 第二、引入CefSha…

排序:归并(Merge)排序算法分析

1.归并操作 归并:把两个或多个已经有序的序列合并成一个。 2路归并:二合一k路归并:k合一结论:m路归并,每选出一个元素需要对比关键字m-1次。 2.算法思想 核心操作:把数组内的两个有序序列归并为一个。 例如: 3.代码实现 将…

什么是大数据可视化

在互联网高速发展的当今,5G的兴起加速了数据传输的速度;与此同时,智能物联网如智慧家电、可穿戴设备等产品的火热,进一步扩充了数据获取的渠道。不仅仅在网页上、手机和电脑应用上以秒计产生海量数据,智能设备同时也在…

04. 人工智能核心基础 - 导论(3)

文章目录 人工智能和其他学科的关系为什么学习人工智能怎么学好人工智能?一些问题 Hi,你好。我是茶桁。 基于上一节课咱们的整体强度有点大,而且咱们马上也要进入高强度内容了,那么这一篇咱们就稍微水一篇吧。来聊聊天&#xff0…

Nginx环境搭建、负载均衡测试

Nginx环境搭建、负载均衡测试 系统环境: win10,IDEA2020,JDK8 一、nginx环境搭建 1.ngxin下载 Nginx官网下载: http://nginx.org/en/download.html Nginx有三种版本,分别是Mainline version(开发版&…

怒刷LeetCode的第19天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:遍历一次数组 方法二:贪心算法 方法三:双指针 第二题 题目来源 题目内容 解决方法 方法一:动态规划 方法二:贪婪算法 方法三:正则表达式 第…

玄子Share 设计模式 GOF 全23种 + 七大设计原则

玄子Share 设计模式 GOF 全23种 七大设计原则 前言: 此文主要内容为 面向对象七大设计原则(OOD Principle)GOF(Gang Of Four)23种设计模式拓展的两个设计模式 简单工厂模式(Simple Factory Pattern&#x…