经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
Resty极简restful框架快速接入Spring
来源:jb51  时间:2022/3/7 14:37:27  对本文有异议

Resty从最初开发到现在已经经历了近10个月时间,在github的star数即将进入400,在没有任何推广的情况,目前的情况还是比较可观的,主要感谢关注restful发展的人们。

对于不理解restful的人其实就是一个url地址的规范,但我从来不这么认为,我一直觉得rest是一种理念,就行java教你面向对象一样,rest教你面向资源,不再以功能来实现接口,以对资源的操作方式来实现接口,目前就我自己使用的情况来说,大多是比较好的反响:

1.接口真的是简单到了极致(而且非常),比如:
登录:

  1. curl?-X?POST?http://users.api.demo.com/sessions?????-H?"Content-Type:?application/json"?????-d?'{"username":?"admin","password":"111111","rememberMe":"false"}'

退出登录:

  1. curl?-X?DELETE?http://users.api.demo.com/sessions

获取当前登录用户:

  1. curl?-X?GET?http://users.api.demo.com/sessions

等等,接口使用者觉得非常简洁优雅,利于管理

2.当你开源预测接口的行为时,你可以做更多的全局性处理,比如在实际情况中:针对某种资源做权限,根据GET,POST,DELETE,PUT等操作做ETag和缓存处理,GET使用缓存,POST,DELETE,PUT更新缓存,及时接口分布在不同的项目缓存也具有即时性,等等

3.直面http,不需要你做额外的设计,http已经为你准备好了,快来进入restful的世界吧

Resty Maven的快照版

1.1.0-SNAPSHOT的更新内容:

1.快速接入Spring

导入spring的包:

  1. <dependency>
  2. ???<groupId>org.springframework</groupId>
  3. ???<artifactId>spring-context</artifactId>
  4. ???<version>${spring-context.version}</version>
  5. </dependency>

编写Spring的启动配置(默认使用注解的方式,使用xml的同学请查阅@ImportResource注解),配置Spring扫描路径,支持多个

  1. @Configuration
  2. @ComponentScan(basePackages?=?{"cn.dreampie.service"})
  3. public?class?HelloApp?{
  4. }

在Resty的AppConfig中配置SpringPlugin

  1. public?void?configPlugin(PluginLoader?pluginLoader)?{
  2. ??pluginLoader.add(new?SpringPlugin(HelloApp.class));
  3. }

然后编写你的Spring class吧

  1. //接口
  2. public?interface?HelloService?{
  3. ??public?String?hello();
  4. }
  5. @Component
  6. public?class?HelloServiceImpl?implements?HelloService?{
  7. ??public?String?hello()?{
  8. ????return?"hello";
  9. ??}
  10. }

在Resource中使用,和原本Spring的方式无区别,你会以为这是一个纯Spring应用,但是route部分确比Spring mvc更简洁

  1. @Autowired
  2. ??private?HelloService?helloService;
  3. ??@GET
  4. ??public?String?get()?{
  5. ????return?helloService.hello();
  6. ??}

Spring集成就是这么简单,这么完美(什么Dubbo+zookeeper早已不在话下)。

2.resty-cache缓存添加过期时间,orm部分使用@Table(expired=10000)

3.resty-security的加密功能提供密钥

  1. public?class?Encryptioner?{
  2. ??public?static?String?md5(String?srcStr)?{
  3. ????return?encrypt("MD5",?srcStr,?null);
  4. ??}
  5. ??public?static?String?md5(String?srcStr,?String?salt)?{
  6. ????return?encrypt("MD5",?srcStr,?salt);
  7. ??}
  8. ??public?static?String?sha1(String?srcStr)?{
  9. ????return?encrypt("SHA-1",?srcStr,?null);
  10. ??}
  11. ??public?static?String?sha1(String?srcStr,?String?salt)?{
  12. ????return?encrypt("SHA-1",?srcStr,?salt);
  13. ??}
  14. ??public?static?String?sha256(String?srcStr)?{
  15. ????return?encrypt("SHA-256",?srcStr,?null);
  16. ??}
  17. ??public?static?String?sha256(String?srcStr,?String?salt)?{
  18. ????return?encrypt("SHA-256",?srcStr,?salt);
  19. ??}
  20. ??public?static?String?sha384(String?srcStr)?{
  21. ????return?encrypt("SHA-384",?srcStr,?null);
  22. ??}
  23. ??public?static?String?sha384(String?srcStr,?String?salt)?{
  24. ????return?encrypt("SHA-384",?srcStr,?salt);
  25. ??}
  26. ??public?static?String?sha512(String?srcStr)?{
  27. ????return?encrypt("SHA-512",?srcStr,?null);
  28. ??}
  29. ??public?static?String?sha512(String?srcStr,?String?salt)?{
  30. ????return?encrypt("SHA-512",?srcStr,?salt);
  31. ??}

4.添加Headers参数获取所有的header

  1. @GET("/headers")
  2. ??public?Headers?headers(Headers?headers)?{
  3. ????return?headers;
  4. ??}

5.添加XForwardedSupports,add config in application.properties  

  1. app.xForwardedSupports=*?或者确定的ip地址?
  2. app.xForwardedSupports=127.0.0.1,127.0.0.2

6.修复其他一般性bug和部分代码重构优化

相关链接

以上就是Resty极简restful框架快速接入Spring的详细内容,更多关于restful框架快速接入Spring的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号