热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:实现条件GET

篇首语:本文由编程笔记#小编为大家整理,主要介绍了实现条件-GET相关的知识,希望对你有一定的参考价值。我有

篇首语:本文由编程笔记#小编为大家整理,主要介绍了实现条件-GET相关的知识,希望对你有一定的参考价值。



我有一个RESTful Web服务,使用Java连接到包含汽车的数据库,并使用Postman进行CRUD操作和测试。

目前,当数据库中的汽车成功返回时,它只使用传统的HTTP GET返回状态200ok。

我现在正在尝试实现条件GET,以便在提交第二个GET请求并且尚未从先前的GET请求修改实体时返回状态304。

阅读条件GET,我知道它使用Last-modified和if-modified-since标题,但在如何实现这一点上却很困难。

在db中,我有一个触发器来更新与每个实体相关的TIMESTAMP,并且我认为这将是一个值,它将被检查以查看自上次请求以来该实体是否已被修改?

任何帮助赞赏

当前的GET请求:

@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("{reg}")
public Response getOneCar(@PathParam("reg") String reg) {
Car car = dao.getCarDetails(reg);
System.out.println("GET CarReg == "+reg);
if(car == null){ // no car with that reg exists
return Response
.status(Response.Status.NOT_FOUND)
.entity("")
.build();
}else{
car.setLink(new ArrayList());
Link linkSelf = new Link();
linkSelf.setRel("self");
linkSelf.setUri(context.getPath());
Link deleteLink = new Link();
deleteLink.setRel("/linkrels/car/delete");
deleteLink.setUri(context.getPath());
Link updateLink = new Link();
updateLink.setRel("/linkrels/car/update");
updateLink.setUri(context.getPath());
car.getLink().add(linkSelf);
car.getLink().add(deleteLink);
car.getLink().add(updateLink);
return Response
.status(Response.Status.OK)
.entity(car)
.build();
}
}

其中一个实体的示例:


3
03G333
Ford
Focus






答案

感谢@Andrew的回复,

我目前正在尝试使用“If-Modified-Since”和“Last-Modified”标题执行此操作。

在服务器上我向客户端发送一个“Last-Modified”标头,它从数据库中的当前汽车获取时间戳,如图所示 - > postman server responce

现在我正在尝试配置邮递员发送回“if-Modified-Since”标题。

如果我比较这些值并且根据时间戳相同或不同,我可以确定要发回的响应。

目前无法配置邮递员发送“If-Modified-Since”标题,然后以某种方式在服务器上获取此值。

Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String lastmodifiedDate = car.getTime();
date = sdf.parse(lastmodifiedDate);
} catch (ParseException ex) {
}
return Response
.status(Response.Status.OK).lastModified(date)
.entity(car)
.build();
}
}


推荐阅读
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 本文详细解析了Autofac在高级应用场景中的具体实现,特别是如何通过注册泛型接口的类来优化依赖注入。示例代码展示了如何使用 `builder.RegisterAssemblyTypes` 方法,结合 `typeof(IEventHandler).Assembly` 和 `Where` 过滤条件,动态注册所有符合条件的类,从而简化配置并提高代码的可维护性。此外,文章还探讨了这一方法在复杂系统中的实际应用及其优势。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 在探讨如何在Android的TextView中实现多彩文字与多样化字体效果时,本文提供了一种不依赖HTML技术的解决方案。通过使用SpannableString和相关的Span类,开发者可以轻松地为文本添加丰富的样式和颜色,从而提升用户体验。文章详细介绍了实现过程中的关键步骤和技术细节,帮助开发者快速掌握这一技巧。 ... [详细]
author-avatar
叨B叨B叨叨叨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有