企业IM (或业务系统)web api的json格式设计思考(原创)
来源:互联网 发布:忘羡捏脸数据 编辑:程序博客网 时间:2024/06/13 07:04
实际上,不仅仅是组织架构变更的,所有的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服务器端插件代码不赘述。
- 企业IM (或业务系统)web api的json格式设计思考(原创)
- 人脸识别系统的设计与思考(原创)
- IM设计思考:XMPP消息格式
- IM设计思考:基于同步HTTP双向流(BOSH)的web im机制
- IM设计思考:基于同步HTTP双向流(BOSH)的web im机制
- IM设计思考:基于同步HTTP双向流(BOSH)的web im机制
- 基于Web的IM实现思考
- 企业业务外包思考
- IM设计思考:试问
- IM设计思考
- IM设计思考:试问
- 225 业务 关于api自动化的思考
- 让web API始终返回json格式的数据
- 系统API访问受保护资源的机制(原创)
- 初级web api的设计(一)
- 测试回顾版-某通信企业的web业务系统性能测试
- 中央气象台 API接口(json格式)
- 中国天气网api(json格式)
- 可方便扩展的JIRA Rest Web API的封装调用
- WPF一步步开发XMPP IM客户端1:入门
- WPF一步步开发XMPP IM客户端2:主窗体设计
- iphone手机safari输入法不支持keyup事件解决方法
- 立体类组共有的抽象类
- 企业IM (或业务系统)web api的json格式设计思考(原创)
- 微服务系统架构的优点与不足
- JIRA Rest JAVA Client API实现问题管理及自定义字段(原创)
- 编写线程安全的Java缓存读写机制 (原创)
- 使用泛型SwingWorker与EDT事件分发线程保持通讯
- Jira API传字符串的换行问题 (文本编辑器使用)
- 读/写锁的实现和应用(高并发状态下的map实现)
- 替换元素节点replaceChild()
- (原创)JAVA阻塞队列LinkedBlockingQueue 以及非阻塞队列ConcurrentLinkedQueue 的区别