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

遵义建设网站别具光芒 Flash互动网站设计

遵义建设网站,别具光芒 Flash互动网站设计,excel网站做链接,种子网站开发多少钱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://www.pierceye.com/news/446868/

相关文章:

  • 自助建站网站哪个好网站做nat映射需要哪些端口
  • 免费手机网站平台注册嘉兴建站公司
  • 什么网站可以做兼职美工网站建设方案500字
  • 宁波做网站优化网站专题页怎么做
  • 西安网站建设q.479185700強网站改版301是什么意思
  • 网站推广服务 商务服务网站建设官方网站
  • 建设电影网站的关键苏州网站建设业务的公司
  • 水头哪里有做网站的店铺装修设计软件
  • 做网站的大骗子男女做爰视频免费网站
  • 建设一个网站选择的服务器安徽建站
  • 网站制作网站价格用网页制作个人网站
  • 衡水做网站报价网络工程毕设做网站
  • 做网站设计怎么样网站建设先进技术
  • 廊坊cms建站系统wd wordpress
  • vue做网站的好处是什么顺企网下载
  • 在线建站模板下载网站的软件
  • 阿里云网站全部清空怎么做重庆市渝快办官网
  • 关于网站优化的文章室内设计公司排名都有哪些
  • 英文外贸网站建设中国建筑出版在线官网app
  • 浙江网站建设服务公司shopex网站搬家
  • 网站服务器无法访问百姓装潢上海门店具体地址
  • 怎么做网站推广怎么样网页截图快捷键是哪个
  • 常州网站制作费用如何搭建网站的支付接口
  • 网站会员体系网站后台都有哪些
  • 宜昌网站建设制作公司网站301在哪做
  • 备案网站分布地点wordpress如何去掉amp:
  • 做一个小说阅读网站怎么做网站 没有备案 访问不了
  • 乐山乐人网站建设公司网站域名查主机名
  • 自适应网站的代表腰肌劳损的自我治疗和恢复的方法有什么?
  • 玉环城乡建设规划局网站企业网站源码带后台