由于我面临一个非常奇怪的问题,我的问题难以理解。我将尽我最大的努力来解释它。
我们有2个应用程序
应用程序1:具有Rest API的Spring Boot应用程序。
应用程序2:基于Web的应用程序,它使用了应用程序1中的rest api来显示信息。
在我的Spring Boot应用程序中,我使用mongo存储库根据日期字段查询文档,当我从邮递员或摇摇欲坠地对其进行测试(在被浏览器中的Web应用程序使用之前),此方法很好用。
当Web应用程序使用剩余的api时,它开始给出错误的日期结果。
当Web应用程序占用了REST API时,无论您在邮差或招摇中调用REST API多少次,都会产生错误的结果。
仅在服务器重新启动并从邮递员或招摇中调用其余api后,它才能给出正确的结果。
我的理解是,当Web应用程序使用其余的api时,文档中的日期将解析为UTC。另一方面,当根本没有来自Web应用程序的呼叫时,邮递员或招摇的情况就不会发生。
这是我的Spring Boot应用程序1中的代码,用于使用mongodb存储库获取文档。
@Service
class EmployeeImpl{
@Autowired
XYZRepository xyzRepository;
public List<Employees> getEmployeeDetails(int EmployeeId) {
Date tempendDate = new Date();
String timeZone = "Asia/Kolkata";//IST timezone
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone(timeZone));
Date endDate = getDatefromStringDate(sdf.format(tempendDate),"yyyy-MM-dd'T'HH:mm:ss'Z'");
Date startDate = addHours(endDateTemp,-24);
List<Employees> employeeList = new ArrayList<>();
Pageable page = PageRequest.of(0, 24, Direction.DESC,"timeStamp");
Page<Employees> employeeDetails = xyzRepository.findByEmployeeIdAndTimeStamp(EmployeeId, startDate,endDate,page);
employeeList.addAll(employeeDetails.getContent());
return employeeList;
}
public Date getDatefromStringDate(String date, String format){
try{
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.parse(date);
}catch (Exception e) {
return null;
}
}
public Date addHours(Date date, int hours){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, hours);
return cal.getTime();
}
}
@Repository
public interface XYZRepository extends CrudRepository<Employees, String> {
@Query("{'EmployeeId':?0,timeStamp: { $gte:?1, $lt:?2}}")
Page<Employees> findByEmployeeIdAndTimeStamp(int EmpId, Date localstartDate,Date localendDate,Pageable pageable);
}
我正在寻找的是,如何在UI调用rest api时获得相同的响应,而在邮递员或swagger调用时如何获得相同的响应。