SPA single page Application 返回js东西,让浏览器执行生成HTML,这种动态的生成,搜索引擎无法收录
RESTful API
RESTful API 大家共同遵守的规范 尽量不要把动词放到URL里,所有的动作都在方法里,URL一看路径就知道是干什么的,一串数字通常是表示id的
representational state transfer
url 不再单指向服务器的资源文件
http方法有语义
数据传输 使用 json
v1代表第一个版本实现的api
get
post
put 修改资源 需要资源的全部属性
patch 修改资源 不需要资源的全部属性
delete 删除资源
复合资源 不存在这个概念
get api.xinda.com/v1/users/10/courses 比如 id为10的所有课程信息
post api.xinda.com/v1/coures 创建课程(课程是独立的,不跟在用户后面 其他三个都是复合资源 既有用户又有课程)
post api.xinda.com/v1/users/10/coures 传一个参数比如cosresid 关联用户和课程
delete api.xinda.com/v1/users/10/coures/100 删除用户关联的某个课程
GraphQL
GraphQL 是Facebook出的,据说是比REFSful更好用的api目前GitHub第四版本的api就是使用这个
微服务 每个服务小,业务单一,独立性强。使用容器化来使用这些微服务比较好
要避免一个服务挂了造成其他服务也不能正常运行的情况
除了http还有其他通信技术
websocket
服务器跟手机的交互一般还要使用socket 来处理长连接,登录之后,就保持长连接。
应用杀掉,其实就断开了,但是安卓应用一般起了二个进程,杀死这个启动那个,所以这也是导致安卓比较卡的原因之一。
RPC remote procedure call
远程方法调用
像调用本地代码一样调用远程代码
谷歌去年出了一个叫 GRPC
需要定义一个文件 protobuf
rpc有自己的语法
rpc使用的是http2协议
游戏客户端很多都不是使用http通信,而是使用jrpc进行通信的。
消息队列 异步的,可以增加服务器处理的吞吐量
Actor 模型 处理高并发
实现微服务的话 要使用golang语言
图灵完备语言就是 如果两个语言都是图灵完备语言,如果a可以实现b就也可以实现