当前位置: 首页 > news >正文

赣州网站建设怎样晋江论坛网友交流留言区

赣州网站建设怎样,晋江论坛网友交流留言区,建站模板怎么选,wordpress+培训模板标签#xff1a;Rest.拦截器.swagger.测试; 一、简介 基于web包的依赖#xff0c;SpringBoot可以快速启动一个web容器#xff0c;简化项目的开发#xff1b; 在web开发中又涉及如下几个功能点#xff1a; 拦截器#xff1a;可以让接口被访问之前#xff0c;将请求拦截… 标签Rest.拦截器.swagger.测试; 一、简介 基于web包的依赖SpringBoot可以快速启动一个web容器简化项目的开发 在web开发中又涉及如下几个功能点 拦截器可以让接口被访问之前将请求拦截到通过对请求的识别和校验判断请求是否允许通过 页面交互对于服务端的开发来说需要具备简单的页面开发能力解决部分场景的需求 Swagger接口通过简单的配置快速生成接口的描述并且提供对接口的测试能力 Junit测试通过编写代码的方式对接口进行测试从而完成对接口的检查和验证并且可以不入侵原代码结构 二、工程搭建 1、工程结构 2、依赖管理 !-- 基础框架组件 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion${spring-boot.version}/version /dependency !-- 接口文档组件 -- dependencygroupIdorg.springdoc/groupIdartifactIdspringdoc-openapi-starter-webmvc-ui/artifactIdversion${springdoc.version}/version /dependency !-- 前端页面组件 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactIdversion${spring-boot.version}/version /dependency !-- 单元测试组件 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversion${spring-boot.version}/versionexclusionsexclusiongroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactId/exclusion/exclusions /dependency dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version /dependency三、Web开发 1、接口开发 编写四个简单常规的接口从对资源操作的角度也就是常说的增Post、删Delete、改Put、查Get并且使用了swagger注解可以快速生成接口文档 RestController Tag(name Rest接口) public class RestWeb {Operation(summary Get接口)GetMapping(rest/get/{id})public String restGet(PathVariable Integer id) {return OK:id;}Operation(summary Post接口)PostMapping(/rest/post)public String restPost(RequestBody ParamBO param){return OK:param.getName();}Operation(summary Put接口)PutMapping(/rest/put)public String restPut(RequestBody ParamBO param){return OK:param.getId();}Operation(summary Delete接口)DeleteMapping(/rest/delete/{id})public String restDelete(PathVariable Integer id){return OK:id;} }2、页面交互 对于服务端开发来说在部分场景下是需要进行简单的页面开发的比如通过页面渲染再去生成文件或者直接通过页面填充邮件内容等 数据接口 Controller public class PageWeb {RequestMapping(/page/view)public ModelAndView pageView (HttpServletRequest request){ModelAndView modelAndView new ModelAndView() ;// 普通参数modelAndView.addObject(name, cicada);modelAndView.addObject(time, 2023-07-12);// 对象模型modelAndView.addObject(page, new PageBO(7,页面数据模型));// List集合ListPageBO pageList new ArrayList() ;pageList.add(new PageBO(1,第一页));pageList.add(new PageBO(2,第二页));modelAndView.addObject(pageList, pageList);// Array数组PageBO[] pageArr new PageBO[]{new PageBO(6,第六页),new PageBO(7,第七页)} ;modelAndView.addObject(pageArr, pageArr);modelAndView.setViewName(/page-view);return modelAndView ;} }页面解析分别解析了普通参数实体对象集合容器数组容器等几种数据模型 div styletext-align: centerhr/h5普通参数解析/h5姓名span th:text${name}/span时间span th:text${time}/spanhr/h5对象模型解析/h5整形span th:text${page.getKey()}/span字符span th:text${page.getValue()}/spanhr/h5集合容器解析/h5table stylemargin:0 auto;width: 200pxtrthKey/ththValue/th/trtr th:eachpage:${pageList}td th:text${page.getKey()}/tdtd th:text${page.getValue()}/td/tr/tablehr/h5数组容器解析/h5table stylemargin:0 auto;width: 200pxtrthKey/ththValue/th/trtr th:eachpage:${pageArr}td th:text${page.getKey()}/tdtd th:text${page.getValue()}/td/tr/tablehr/ /div效果图展示 四、拦截器 1、拦截器定义 通过实现HandlerInterceptor接口完成对两个拦截器的自定义请求在访问服务时必须通过两个拦截器的校验 /*** 拦截器一*/ public class HeadInterceptor implements HandlerInterceptor {private static final Logger log LoggerFactory.getLogger(HeadInterceptor.class);Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {log.info(HeadInterceptor:preHandle);IteratorString headNames request.getHeaderNames().asIterator();log.info(request-header);while (headNames.hasNext()){String headName headNames.next();String headValue request.getHeader(headName);System.out.println(headName:headValue);}// 放开拦截return true;}Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler, ModelAndView modelAndView) throws Exception {log.info(HeadInterceptor:postHandle);}Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler, Exception e) throws Exception {log.info(HeadInterceptor:afterCompletion);} }/*** 拦截器二*/ public class BodyInterceptor implements HandlerInterceptor {private static final Logger log LoggerFactory.getLogger(BodyInterceptor.class);Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception {log.info(BodyInterceptor:preHandle);IteratorString paramNames request.getParameterNames().asIterator();log.info(request-param);while (paramNames.hasNext()){String paramName paramNames.next();String paramValue request.getParameter(paramName);System.out.println(paramName:paramValue);}// 放开拦截return true;}Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler, ModelAndView modelAndView) throws Exception {log.info(BodyInterceptor:postHandle);}Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler, Exception e) throws Exception {log.info(BodyInterceptor:afterCompletion);} }2、拦截器配置 自定义拦截器之后还需要添加到web工程的配置文件中可以通过实现WebMvcConfigurer接口完成自定义的配置添加 Configuration public class WebMvcConfig implements WebMvcConfigurer {/*** 添加自定义拦截器*/Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new HeadInterceptor()).addPathPatterns(/**);registry.addInterceptor(new BodyInterceptor()).addPathPatterns(/**);} }五、测试工具 1、Swagger接口 添加上述的springdoc依赖之后还可以在配置文件中简单定义一些信息访问IP:端口/swagger-ui/index.html即可 Configuration public class WebMvcConfig implements WebMvcConfigurer {/*** 接口文档配置*/Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title(【boot-web】).description(Rest接口文档-2023-07-11).version(1.0.0));} }2、Junit测试 在个人的习惯上Swagger接口文档更偏向在前后端对接的时候使用而Junit单元测试更符合开发的时候使用这里是对RestWeb中的接口进行测试 RunWith(SpringRunner.class) SpringBootTest AutoConfigureMockMvc public class RestWebTest {Autowiredprivate MockMvc mockMvc;Testpublic void testGet () throws Exception {// GET接口测试MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.get(/rest/get/1)).andReturn();printMvcResult(mvcResult);}Testpublic void testPost () throws Exception {// 参数模型JsonMapper jsonMapper new JsonMapper();ParamBO param new ParamBO(null,单元测试,new Date()) ;String paramJson jsonMapper.writeValueAsString(param) ;// Post接口测试MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.post(/rest/post).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).content(paramJson)).andReturn();printMvcResult(mvcResult);}Testpublic void testPut () throws Exception {// 参数模型JsonMapper jsonMapper new JsonMapper();ParamBO param new ParamBO(7,Junit组件,new Date()) ;String paramJson jsonMapper.writeValueAsString(param) ;// Put接口测试MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.put(/rest/put).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).content(paramJson)).andReturn();printMvcResult(mvcResult);}Testpublic void testDelete () throws Exception {// Delete接口测试MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.delete(/rest/delete/2)).andReturn();printMvcResult(mvcResult);}/*** 打印【MvcResult】信息*/private void printMvcResult (MvcResult mvcResult) throws Exception {System.out.println(请求-URI【mvcResult.getRequest().getRequestURI()】);System.out.println(响应-status【mvcResult.getResponse().getStatus()】);System.out.println(响应-content【mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8)】);} }六、参考源码 文档仓库 https://gitee.com/cicadasmile/butte-java-note源码仓库 https://gitee.com/cicadasmile/butte-spring-parent
http://www.hkea.cn/news/14529710/

相关文章:

  • 三星网站建设内容爱情动做网站推荐
  • 手机网站APP网络推广商城网站社群运营
  • 详情页设计模板网站门户网站都有哪些内容
  • 做旅游网站的yi鲜花网页设计模板
  • 地域名网址ip查询团购网站如何优化
  • 网站建设方案书域名备案菏泽网站建设
  • 网站 wap 插件婚恋网站女孩子都是做美容
  • 寿光网站建设推广大连金州代做网站公众号
  • 外国永久网站广州建筑集团网站
  • 南昌网站定制phpcms做视频网站
  • dedecms游戏门户网站源码卓手机建网站
  • 整人关不掉的网站怎么做虚拟机怎么做多个网站
  • 图片链接生成网站宜城网站建设哪家好
  • 中国水利教育培训网站选择网站建设公司好
  • 网站建设和执纪监督怎么联系地推公司
  • 邢台移动网站建设价格郴州建设工程建设信息网站
  • 中山市网站开发外包公司全国前十装饰公司排名
  • 郑州汉狮专业做网站公司dede导入wordpress
  • 龙岗建网站公司齐鲁人才网招聘网
  • 技术网站摄影网页设计方案
  • 上海共富新村网站建设wordpress超联系
  • 肇庆网站优化建设网站建设除凡科外还有哪些
  • 企业网站报价方案模板龙岩建筑网
  • 潍坊品牌网站建设公司在手机上开发app
  • 山东网站制作策划短视频seo优化
  • 宜昌营销网站建设输入网站查看空间
  • 4成都网站建设一起做网店一样的网站
  • 企业做网站有用吗天涯做网站图片尺寸
  • 浏览器直接进入网站新闻发布网站如果做
  • 国外建站用什么最多wordpress的好