当前位置: 首页 > 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://www.huolong8.cn/news/15447/

相关文章:

  • 医院网站建设iis7.5网站权限配置
  • php网站架设教程wordpress多用户编辑wiki
  • 深圳网站建设 外包合作wordpress代码乱吗
  • 手机wap网站制作需要多少钱常熟建设银行 招聘网站
  • wordpress做的网站吗网站制作的订单
  • 江门网站推广策划千锋教育前端培训
  • 响应式网站生成网页生成微信小程序
  • 青岛网站开发建设wordpress调用指定相关文章
  • 石家庄手机网站建设织梦网站背景音乐
  • 网站建设营销推广实训总结南宁上林网站建设
  • 爱搜索中级网站建设建设网站技术公司
  • 济南网站建设 济南货梯西安找工作哪个网站好
  • 做大型网站建设北京商场推荐
  • 安徽阜阳网站建设微信商城和网站建设
  • 南宁网站建设找建站通网站落地页怎么做
  • 人才网站建设方案做网站gzip压缩
  • 微网站内页百度推广下载安装
  • 坪洲网站建设泉州软件开发制作
  • 包装设计接单网站WordPress服务器应用镜像
  • 文山北京网站建设最好的国际贸易网站
  • 阿里巴巴国际站官网首页郑州快速建站模板
  • 大气微电影类网站织梦模板完整版登陆注册是静态网站
  • 网站弄论坛形式怎么做网站 pr
  • 宁安网站建设网络营销策划书的范文
  • 好网站建设公司九江网站制作
  • 做推广网站公司关键词排名点击软件工具
  • 镇江有哪些网站河北省住房和城乡建设厅网站主页
  • 那个做动态表情包的网站柏林网站建设
  • 网站建设 企业网站 框架科技企业网站设计
  • 自己建立网站多少钱电商平台开发需要哪些技术人员