旅游网站制作模板/外贸商城建站
1.Restful 是什么?
API 设计风格
2.Restful和http关系
restful只是一种风格,http只是一种协议,二者不应有交集。
项目可以采用多种api设计风格,restful也不一定依赖http协议。
3.Restful怎样理解?
restful–Representational State Transfer
表示层状态转移,细纠的话和“表示层”,“状态”,“转移”有关。
restful原本含义是怎样呢?
restful是一种规则。
为什么要有设计模式?设计模式追求的是代码的高效,真正高效的代码是人看不懂的代码。设计模式应该是一种平衡。
规则即接口,接口即功能。有什么样的接口就有什么样的功能。
restful不允许出现动词。
restful遵循面向对象的原则。
//资源如下
List<Dog> dogs = new ArrayList<Dog>();
dogs.add(new Dog('wangwang'));
dogs.add(new Dog('dahuang'));
dogs.add(new Dog('hashiqi'));
请问如何设计符合Restful风格的API?
/user/xiaoming/dog/wangwang
如果小明将狗送给小红,则接口变成
/user/xiaohong/dog/wangwang
wangwang是dog, 一个资源,难道它属于小明么?
确定性资源和不确定性资源
/user/xiaoming/blog/1 – 小明的博客1
/user/xiaming/blog/2 – 小明的博客2
这种确定性的资源可以用上面这种方式。
但如wangwang和xiaoming,这种地位相同的资源(不确定资源–即将来可能变化的资源),如何设计?
扁平化设计
/dog/wangwang?user=xiaoming
/dog/wangwang
name:wangwang
master:xiaoming
HTTP动词
项目中大量用到GET,POST,不推荐使用UPDATE和DELETE表示改和删。
推荐 增,改使用post
增加
post:/user/
requestHead:
username:zhangsan
password:SFDLJsaljfaslkjlsadjf23232lasdjf
...
更新
post:/user/?cmd=update
requestHead:
username:zhangsan2
password:SFDLJsaljfaslkjlsadjf23232lasdjf
...
删除和查询用get
删除
get:/user/{userid}?cmd=delete
查询
get:/user/{userid}