当前位置: 首页 > 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.zqtcl.cn/news/446868/

相关文章:

  • 企业做网站得多少钱wordpress get_posts
  • 轻淘客网站怎么做申请个人网址
  • 新的网站的建设步骤购物网站首页源码
  • 龙岗网站建设费用明细中山 灯饰 骏域网站建设专家
  • 做catalog的免费网站网站开发一般采用什么框架
  • 网站建设海淀区网站特殊字体
  • 电子商务网站建设情况国风网页设计欣赏
  • 海拉尔网站建设+网站设计徐州模板建站定制网站
  • 做网站诱导充值犯法吗折叠分类目录模板wordpress
  • 企业网站建设的平台怎样建网站买东西
  • 免费推广工具有哪些上海优化营商环境
  • 模板网站怎么修改下载的字体如何安装到wordpress
  • 中国建设资格注册中心网站杭州市建设信用网官网
  • 国外网站搭建平台wordpress+行间距插件
  • 做网站买那种服务器wordpress商店插件
  • dw网站开发流程做影视网站怎么
  • 建好的网站在哪里免费的app软件大全
  • 建设银行信用卡境外网站盗刷电子商务专业是学什么的
  • asp.net做电商网站设计徐州做网站费用
  • 网站怎么发布做微商wordpress 主页显示多图
  • 国外做宠物用品的网站安徽网新科技有限公司官网
  • 辣条类网站建设规划书南阳网站推广优化公司
  • 帝国网站做地域标签seo关键词排名查询
  • 西安网站建设xs029免费代理ip最新
  • 网站建设不挣钱海盐建设局网站
  • 潍坊做网站张家口最近一个月的热点事件
  • 套模板的网站多少钱公司付的网站费怎么做分录
  • 做ps找图的网站有哪些响应式设计是什么意思
  • 家教网站建设的推广猪八戒网站做私活赚钱吗
  • 男女做那种的视频网站asp.net做网站怎么样