博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
企业IM (或业务系统)web api的json格式设计思考(原创)
阅读量:4136 次
发布时间:2019-05-25

本文共 1443 字,大约阅读时间需要 4 分钟。

在企业IM开发中,经常用到和业务系统的数据交换,在中国企业最常见的比如组织架构变更,一般在客户端加密保存了组织架构树(便于快速的查询和树展示),当HR或OA或AD域这些管控企业组织架构的数据发生改变,需要IM服务器推送最新的组织架构,如果推送整个组织架构,数据量非常大(千人以上时),恰当的方式是:仅对变化量通过版本比对进行更新,而不是整体更新。

实际上,不仅仅是组织架构变更的,所有的http web api设计都可以参考这个设计。

取个名字:动词解析式Json数据格式 (Verb Parsing Json,简称VPJ,哈哈)。简要说明:

创建新数据:

{ "create": {"table1": [ {
"verb": value}, {
"verb": value}, ...],"table2": [ {
"verb": value}, {
"verb": value}, ...], }}

例1,添加同事的vcard(根据username):

{ "create": { "ofVCard": ["add": {"username": "zhangsan", "vcard": "<vCard xmlns="vcard-temp"><N><FAMILY/> <GIVEN>张三</GIVEN> </N> <ORG><ORGNAME/> </ORG>......</vCard>"} ] } }  

 

更新数据:

{ "update": {"table1": [ {
"verb": value}, {
"verb": value}, ...],"table2": [ {
"verb": value}, {
"verb": value}, ...], }}

 

例1,更新电话号码(根据ID):

{ "update": { "ofUser": ["edit": {"id": 10002, "phone": "13710699999"} ] } }  

 

例2,更新电话号码(根据USERNAME):

{ "update": { "ofUser": ["edit": {"username": “wangxin”, "phone": "13710699999"} ] } }  

 

例3,更新一位同事电话号码,同时增加一个新人,同时删除2位同事(根据USERNAME):

{ "update":

{

"ofUser": ["edit": {"username": “wangxin”, "phone": "13710699999"} ]

"ofUser": ["add": {"username": “zhangsan”, "phone": "13710688888", "name": "张三", "email": "zhangsan@163.com"} ]

"ofUser": ["remove": {"username": “lisi”} ]

"ofUser": ["remove": {"username": “wangwu”} ]

}

}  

 

例4,删除一个同事的Vcard(根据USERNAME):

{ "update": { "ofVCard": [{"remove": {"username": zhangsan} }] } }

 

总之,就是一个动词控制api。

客户端实现代码和openfire服务器端插件代码不赘述。

转载地址:http://htpvi.baihongyu.com/

你可能感兴趣的文章
C语言8
查看>>
Qt实现简单延时
查看>>
qml有关矩形说明
查看>>
在qt中使用QSplitter设置初始比例setStretchFactor失效的解决方法
查看>>
repeater的使用
查看>>
qt msvc编译中文乱码解决
查看>>
qt中TextField输入框无法输入中文解决办法
查看>>
qt实现点击出现窗口,点击其他任何地方窗口消失
查看>>
QML DropArea拖拉文件事件
查看>>
CORBA links
查看>>
读后感:&gt;
查看>>
ideas about sharing software
查看>>
different aspects for software
查看>>
To do list
查看>>
Study of Source code
查看>>
如何使用BBC英语学习频道
查看>>
spring事务探索
查看>>
浅谈Spring声明式事务管理ThreadLocal和JDKProxy
查看>>
初识xsd
查看>>
java 设计模式-职责型模式
查看>>