Spring Boot获取节假日API
项目场景:
需要知道某一天是不是节假日,或者是休息日。
问题描述
我们知道每年的假节日要等国家规定好,我们才能知道,所以自己是算不出的。
马上想到的两个解决方法:
1.通过调用互联网的节假日API(优点:方便,缺点:主动权在别人手里,万一别人的服务器出了问题,自己的服务也会受影响)
2.每年自己手动配置一次(优点:安全不会出问题,缺点:麻烦)
感觉都不是很完美,最后把这两种结合一下,生成的解决方案:
每年年底定时去调用互联网的节假日API,做个异常捕捉,如果同步失败,证明这个接口可能出了问题,然后再去手动配置。后面再去排查接口的问题,如果是接口已经停用了,那么再换另一个节假日API的接口,重新调整。所以最好选个比较稳定的第三方接口。
我这边用的是RollToolsApi官网:https://www.mxnzp.com/
解决方案:
节假日接口:https://www.mxnzp.com/doc/detail?id=1
关键代码:我这里只是打印了日期,没有入库,大家可以入库保存,其中app_id和app_secret需要在官网创建,是免费的。
package com.test.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import com.test.dto.Holiday;
import com.test.dto.HolidayData;
import com.test.dto.HolidayResult;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;@RestController
@RequestMapping("/day")
@Api(value = "节假日")
public class TestController {@Autowiredprivate RestTemplate restTemplate;@RequestMapping(value = "getDay", method = RequestMethod.GET)@ApiOperation(value = "测试")public String getDay() {/** 互联网节假日api接口,公安网需要主动导入配置* www.mxnzp.com* ignoreHoliday: 是否忽略节假日,仅仅获取万年历,默认值false*/String url = "https://www.mxnzp.com/api/holiday/list/year/2022"+ "?ignoreHoliday=false&app_id=登录官网创建&app_secret=登录官网创建";HolidayResult result = restTemplate.getForObject(url, HolidayResult.class);if(result.getCode() != null && result.getCode() == 1){//成功: code: 状态码 1.返回成功 0.返回失败if(!CollectionUtils.isEmpty(result.getData())){for (HolidayData data : result.getData()) {System.out.println("月份: "+data.getMonth());for (Holiday day : data.getDays()) {System.out.println(day.getDate()+"\t"+day.getType()+"\t"+day.getTypeDes());}System.out.println("\n");}}}else{//失败}return result.getMsg();}@RequestMapping(value = "importDay", method = RequestMethod.POST)@ApiOperation(value = "测试导入")public String importDay(@RequestBody HolidayResult result) {if(result == null){return "不能为空";}if(result.getCode() != null && result.getCode() == 1){//成功: code: 状态码 1.返回成功 0.返回失败if(!CollectionUtils.isEmpty(result.getData())){for (HolidayData data : result.getData()) {System.out.println("月份: "+data.getMonth());for (Holiday day : data.getDays()) {System.out.println(day.getDate()+"\t"+day.getType()+"\t"+day.getTypeDes());}System.out.println("\n");}}}else{//失败}return result.getMsg();}}
实体类用于接收响应结果
HolidayResult
package com.test.dto;import java.util.List;import lombok.Data;@Data
public class HolidayResult {private Integer code; //状态码 1.返回成功 0.返回失败private String msg; //提示信息private List<HolidayData> data;
}
HolidayData
package com.test.dto;import java.util.List;import lombok.Data;@Data
public class HolidayData {private Integer month; //当前月份private Integer year; //当前年份private List<Holiday> days;
}
Holiday
package com.test.dto;import lombok.Data;@Data
public class Holiday {private String date; //当前日期private Integer weekDay; //当前周第几天 1-周一 2-周二 ... 7-周日private String yearTips; //天干地支纪年法描述 例如:戊戌private Integer type; //类型 0 工作日 1 休息日 2 节假日 如果ignoreHoliday参数为true,这个字段不返回private String typeDes; //类型描述 比如 国庆,休息日,工作日 如果ignoreHoliday参数为true,这个字段不返回private String chineseZodiac; //属相 例如:狗private String solarTerms; //节气描述 例如:小雪private String avoid; //不宜事项private String lunarCalendar; //农历日期private String suit; //宜事项private Integer dayOfYear; //这一年的第几天private Integer weekOfYear; //这一年的第几周private String constellation; //星座private Integer indexWorkDayOfMonth; //如果当前是工作日 则返回是当前月的第几个工作日,否则返回0 如果ignoreHoliday参数为true,这个字段不返回
}
我这里手动配置是采用json参数的方式,大家可以改为导入文件的方式。
源码:https://download.csdn.net/download/u011974797/86513910
Spring Boot获取节假日API相关推荐
- spring boot开发接口api
spring boot开发接口api 在上一次教了大家怎么去搭建一个自己的后端模板之后,现在和大家分享讨论一下如何开发RestfulApi接口. 首先开发api之前要考虑到后端是需要写api文档的 ...
- 转:Spring Boot 获取 HttpServletRequest 的方法
转自: Spring Boot 获取 HttpServletRequest 的方法 - 简书本文介绍 Spring Boot 2 获取 HttpServletRequest 的方法. 目录 概述 方法 ...
- Spring boot 获取本机的IP地址mac地址以及电脑名称!
Spring boot 获取本机的IP地址mac地址以及电脑名称! package com.example.demo;import java.net.InetAddress;import java.n ...
- spring boot 获取cookie信息
spring boot 获取cookie信息 先创建一个cookie @RequestMapping(value = "/setCookies",method = RequestM ...
- Spring Boot 通过Restful API,在PostMan 中返回数据
Spring Boot 通过Restful API,在PostMan 中返回数据 资源组 新增 POST/resource_group/ad 请求体:格式:from-data参数:groupName= ...
- 如何使用MySQL和JPA使用Spring Boot构建Rest API
Hi Everyone! For the past year, I have been learning JavaScript for full-stack web development. For ...
- Spring Boot与RESTful API
2019独角兽企业重金招聘Python工程师标准>>> 在上一篇Spring Boot开发WEB页面文章中,我们介绍了如何搭建一个有页面的web项目,这一篇我们则着重讲一下Sprin ...
- Spring Boot 之 RESRful API 权限控制
一.为何用RESTful API 1.1 RESTful是什么? RESTful(Representational State Transfer)架构风格,是一个Web自身的架构风格,底层主要基于HT ...
- Spring Boot 获取 Bean 的 3 种方式!还有谁不会?
作者 | chilx 来源 | https://blog.csdn.net/showchi/article/details/97005720 注意:调用者要被spring管理 方式一 注解@PostC ...
- Web笔记-session盗用安全问题(Spring Boot获取所有session及提高安全性)
此处本人的过滤代码如下: 仅仅是判断了这个session有没有被记录,有没有attribute! 某些IT论坛,就是这样的,通过session,就可以进行批量帐号操作,发取http协议. 这里演示如下 ...
最新文章
- 第四届蓝桥杯省赛javaB组试题解析
- 抢劫(01背包+对立事件)
- 征文通知 | 第十八届中国计算语言学大会(CCL 2019)论文提交截止时间推迟
- 生产者消费者的实际使用
- java 并发编程视频教程_全面深入学习java并发编程,视频教程下载
- pandas基础(part3)--描述性统计
- 在局域网访问_局域网访问共享文件需要密码怎么办?取消访问密码的方法
- java中多线程 - 多线程中的基本方法
- 2018年海南计算机职称考试,海南省2018年全国计算机等级考试报名时间
- 训练日志 2019.4.14
- mysql部署window设置分片_window配置 mysql 详细步骤
- centos下的mysql安装
- html常用代码大全_电子元器件知识资料大全
- Hilbert 变换与瞬时频率
- 恶意软件清理助手 1.76
- 暑期旅游超十亿人次,张家界成为大黑马,挤掉三亚西安排全国第三
- xss.haozi.me弹窗练习0x00-0x10
- 固态硬盘跟机械硬盘的区别
- #java读书笔记#基础知识
- 【SwiftUI学习笔记】Git Repository Creation FailedEnsure the author information supplied in Xcode ...
热门文章
- ThinkPad如何禁用触摸板
- LaTeX 中的数学字体
- [C#][原创]Magick.NET使用时一些弱点简介
- 分数加减法—两个分数的加减法
- PS计算机字体Q,PS q萌字体教程
- android设置自动亮度,Android设置屏幕亮度
- Docker镜像加速
- Android Camera动态人脸识别+人脸检测基于OpenCV(无需OpenCVManager)
- 求职招聘小程序 毕业设计毕业论文 开题报告和效果图参考(基于微信小程序毕业设计题目选题课题)
- HTML+CSS导航栏及下拉菜单的实现