来自浏览器的Rest API调用从Spring Boot应用程序中的mongo存储库呈现错误的日期结果

时间:2019-02-22 20:54:33

标签: spring-boot-gradle-plugin

由于我面临一个非常奇怪的问题,我的问题难以理解。我将尽我最大的努力来解释它。

我们有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调用时如何获得相同的响应。

0 个答案:

没有答案