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

宁夏城乡建设厅网站顺德建设网站

宁夏城乡建设厅网站,顺德建设网站,山东省交通厅建设网站首页,wordpress轮播图设置api 数据gzip压缩在某些情况下#xff0c;您的REST api会提供非常长的响应#xff0c;我们都知道移动设备/网络上的传输速度和带宽仍然非常重要。 我认为这是开发支持移动应用程序的REST api时需要解决的第一个性能优化点。 你猜怎么了#xff1f; 因为响应是文本#xff0… api 数据gzip压缩 在某些情况下您的REST api会提供非常长的响应我们都知道移动设备/网络上的传输速度和带宽仍然非常重要。 我认为这是开发支持移动应用程序的REST api时需要解决的第一个性能优化点。 你猜怎么了 因为响应是文本所以我们可以压缩它们。 借助当今智能手机和平板电脑的强大功能在客户端上解压缩它们并不是什么大不了的事。因此在本文中我将介绍如何使用泽西岛Jersey在Java中构建压缩REST API响应的方法。是JAX-RS参考实现以及更多… 1.球衣过滤器和拦截器 好吧得益于Jersey强大的过滤器和拦截器功能实现起来相当容易。 过滤器主要用于操纵请求和响应参数例如HTTP头URI和/或HTTP方法而拦截器则用于通过操纵实体输入/输出流来操纵实体。 您已经在我的帖子中看到了过滤器的功能 如何使用Jersey来在Java的服务器端添加CORS支持 在此我展示了如何CORS启用REST API 和 如何使用SLF4J和Logback登录Spring 在那里我展示了如何记录来自REST API的请求和响应 但要进行压缩将使用GZip WriterInterceptor 。 Writer拦截器用于将实体写入“线路”的情况在这种情况下在服务器端这意味着写出响应实体时。 GZip作家拦截器 因此让我们看一下我们的GZip Writer拦截器 GZip作家拦截器 package org.codingpedia.demo.rest.interceptors;import java.io.IOException; import java.io.OutputStream; import java.util.zip.GZIPOutputStream;import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.ext.WriterInterceptor; import javax.ws.rs.ext.WriterInterceptorContext;Provider Compress public class GZIPWriterInterceptor implements WriterInterceptor {Overridepublic void aroundWriteTo(WriterInterceptorContext context)throws IOException, WebApplicationException {MultivaluedMapString,Object headers context.getHeaders();headers.add(Content-Encoding, gzip);final OutputStream outputStream context.getOutputStream();context.setOutputStream(new GZIPOutputStream(outputStream));context.proceed();} } 注意 它实现了WriterInterceptor 它是消息正文WriterInterceptor器拦截器的接口该拦截器包装了对javax.ws.rs.ext.MessageBodyWriter.writeTo调用。 实现WriterInterceptor合同的提供程序必须在JAX-RS运行时中以编程方式注册或者必须使用Provider批注进行注释以在提供程序扫描阶段由JAX-RS运行时自动发现。 Compress是名称绑定批注我们将在下一段中对其进行详细讨论 “拦截器从WriterInterceptorContext获取输出流并设置一个新流它是原始输出流的GZIP包装器。 执行完所有拦截器后最后设置为WriterInterceptorContext的输出流将用于实体的序列化。 在上面的示例中实体字节将被写入GZIPOutputStream它将压缩流数据并将其写入原始输出流。 原始流始终是将数据写入“电线”的流。 在服务器上使用拦截器时原始输出流是将数据写入底层服务器容器流的流该流将响应发送到客户端。 [2] “ WriteTo的重写方法将WriterInterceptorContext作为参数。 此上下文包含标头参数请求属性实体实体流和其他属性的获取器和设置器。” [2]; 压缩响应时应将“ Content-Encoding”标头设置为“ gzip” 压缩注释 过滤器和拦截器可以绑定名称 。 名称绑定是一个概念它允许对JAX-RS运行时说仅针对特定资源方法才执行特定过滤器或拦截器。 当过滤器或拦截器仅限于特定资源方法时我们说它是名称绑定的 。 没有这种限制的过滤器和拦截器称为global 。 在我们的案例中我们构建了Compress批注 压缩注释 package org.codingpedia.demo.rest.interceptors;import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy;import javax.ws.rs.NameBinding;//Compress annotation is the name binding annotation NameBinding Retention(RetentionPolicy.RUNTIME) public interface Compress {} 并用它来标记应该压缩的资源上的方法 例如使用PodcastsResource获取所有播PodcastsResource Compress资源方法上的注释用法 Component Path(/podcasts) public class PodcastsResource {Autowiredprivate PodcastService podcastService;.........................../** *********************************** READ ************************************//*** Returns all resources (podcasts) from the database* * return* throws IOException* throws JsonMappingException* throws JsonGenerationException* throws AppException*/GETCompressProduces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })public ListPodcast getPodcasts(QueryParam(orderByInsertionDate) String orderByInsertionDate,QueryParam(numberDaysToLookBack) Integer numberDaysToLookBack)throws IOException, AppException {ListPodcast podcasts podcastService.getPodcasts(orderByInsertionDate, numberDaysToLookBack);return podcasts;}........................... }2.测试 SOAPui 好吧如果您正在使用SOAPui进行测试则可以针对PodcastsResource发出以下请求。 请求 请求示例 GET http://localhost:8888/demo-rest-jersey-spring/podcasts/?orderByInsertionDateDESC HTTP/1.1 Accept-Encoding: gzip,deflate Accept: application/json, application/xml Host: localhost:8888 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5)响应 GZipped json响应由SOAPui自动解压缩 HTTP/1.1 200 OK Content-Type: application/json Content-Encoding: gzip Content-Length: 409 Server: Jetty(9.0.7.v20131107)[{id: 2,title: Quarks Co - zum Mitnehmen,linkOnPodcastpedia: http://www.podcastpedia.org/quarks,feed: http://podcast.wdr.de/quarks.xml,description: Quarks Co: Das Wissenschaftsmagazin,insertionDate: 2014-10-29T10:46:13.000100},{id: 1,title: - The Naked Scientists Podcast - Stripping Down Science,linkOnPodcastpedia: http://www.podcastpedia.org/podcasts/792/-The-Naked-Scientists-Podcast-Stripping-Down-Science,feed: feed_placeholder,description: The Naked Scientists flagship science show brings you a lighthearted look at the latest scientific breakthroughs, interviews with the world top scientists, answers to your science questions and science experiments to try at home.,insertionDate: 2014-10-29T10:46:02.000100} ] SOAPui可以识别Content-Type: gzip标头已添加到GZIPWriterInterceptor并自动解压缩响应并将其显示为人眼可读。 好就是这样。 您已经了解到Jersey如何直接压缩REST api响应。 提示如果您真的想学习如何在Java中设计和实现REST API请阅读以下教程–借助Jersey和Spring在Java中进行REST API设计和实现 翻译自: https://www.javacodegeeks.com/2014/11/how-to-compress-responses-in-java-rest-api-with-gzip-and-jersey.htmlapi 数据gzip压缩
http://wiki.neutronadmin.com/news/15447/

相关文章:

  • 网站套餐表格模板昌平区事业单位公共知识培训网站
  • 软件工网站开发课程设计报告扁平化配色方案网站
  • 常熟网站设计wordpress页面添加图片不显示
  • 万网提供的网站建设服务的具体项目建筑工程东莞网站建设
  • 网站宣传推广方案wordpress安全博客
  • 自己做网站排版wordpress图片本地化工具
  • 服装外贸网站建设国际数据公司idc
  • 动力无限网站效果好不好在哪个网站上做推广作用好
  • 做京东网站的摘要lol怎么做直播网站
  • 千博企业网站管理系统2013上海洛可可设计公司
  • 渝中网站公司网站 建设 基本 数据库
  • 网站开发 方案 报价自助做网站哪家好
  • 上海网站开发技术最好公司上海公司免费起名
  • 淮安营销型网站建设网站建设案例行情
  • 做排名的网站怎么开发网页
  • 网站做飘浮怎么做网站建设与管理管理课程
  • 公司网站建设费用的会计分录wordpress views
  • 网站后台模板免费下载青岛网站建设公司大全
  • 怎么在企业站建立网站吗乌克兰服务器
  • 南昌做个网站多少钱云南网站建设方案
  • 移动网站开发入门大型网站开发 书籍
  • 绵阳网站常用网站建设技术有哪些
  • 如何做百度秒收录网站单位举报网站建设维护情况报告
  • 网站建设主要包括哪些wordpress下载资源站主题
  • 自己怎么做网站的聚合页面桐城网站定制
  • 保健品网站设计天津自贸区建设局网站
  • 网站开发中 即将上线php简单购物网站源码
  • 网站闭站深圳有多少家设计公司
  • 公众号申请网站制作网站基本步骤
  • 网站建设公司怎么找客户怎么做网站地图