美文网首页
封装restful

封装restful

作者: vivi_wong | 来源:发表于2017-03-04 00:02 被阅读0次

在restful这一层 要封装的东西比较多

1.request

首先封装一个requestContext的bean,@Param @Params @FormFile @FormFiles

这些注解可以打在controlller的方法上面,@Param定义传进来的参数,@FormFile 定义传进来的file

写一个类实现HandlerMethodArgumentResolver,复写supportsParameter,resolveArgument,

resolveArgument 返回requestContext,在contrller的方法参数就可以写这个参数,获取封装后的request的参数。

附件也可以获取。

2 converter

接口Converter, ConversionService

写一个实现类实现converter 注入到上面写的实现类,获取值的是就可以转换

3.exceptionhandler

实现HandlerExceptionResolver

复写 resolveException

预先定义好 一些entry   message,code

最后统一匹配异常判处json格式的errorcode

4 RequestMappingHandlerAdapter

写一个实现RequestMappingHandlerAdapter接口

复写afterPropertiesSe

覆盖Spring MVC类,用于转JSON.

5 HandlerMethodReturnValueHandler

写一个jsonreturnvaluehandler

利用  jsonserializer 去把返回值都转为json

JsonSerializerFactory 就是把@json定义好的字段 和  序列化解析器整合然后生成对应的json数据

这里说一下 flexjson.JSONSerializer

.exclude()

.include()

分别扩展了

flexjson.JSONContext flexjson.PathExpression   flexjson.JSONSerializer

6 HandlerInterceptorAdapter

写了一个关于记录日志的队列,每当有request请求,就把相关信息封装到一个item,里面去,然后add到队列里面去,这里要提一起,用了3个队列,设置一个flushed,如果是flused,把队列的全部item  使用掉,如果不是,设置了一个定值比如100, 每100个使用,

再写一个类,定时任务,然后从队列里面获取日志item 存储起来。

7 AttachmentResolver

该接口 分别有三个方法

store, reslove2read remove

1.本地存储,获取文件流,保存在服务器本地

2.fastdfs

org.csource.fastdfs.UploadCallback

org.csource.fastdfs.StorageClient ,org.csource.fastdfs.TrackerServer

原理是,通过TrackerServer 找到对应的storeserver,调用callback,把文件流存储到storeserver

下载也是一样的,通过trackerserver找到storeserver  把文件流获取返回

SubjectResolver

实现HandlerMethodArgumentResolver

返回Subject  通过Subject  获取用户相关信息

PermissionCheckInterceptor

实现HandlerInterceptorAdapter

获取method的@permit注解,定义的URL,判断该用户是否拥有这个权限

WebSocketDispacherHandler

实现TextWebSocketHandler接口

复写handleTextMessage

接受请求,利用session.send(message)返回信息

这里的session对应每个客户端与服务器的请求

相关文章

网友评论

      本文标题:封装restful

      本文链接:https://www.haomeiwen.com/subject/gxorgttx.html