9-3 前后端分离与 RESTful 常见面试题
Posted WinvenChang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9-3 前后端分离与 RESTful 常见面试题相关的知识,希望对你有一定的参考价值。
一、考点聚焦
什么是前后端分离?什么是RESTful
1.前后端分离的意义和方式
2.什么是RESTful
3.如何设计RESTful
二、什么是前后端分离?有哪些优点?
后端只负责提供数据接口,不再渲染模板,前端获取数据并呈现
1.前后端解耦,接口复用(前端和客户端公用接口),减少开发量
2.各司其职,前后端同步开发,提升工作效率。定义好接口规范。
3.更有利于调度(mock
)、测试和运维部署
4.缺点是对于单页面不好做seo
三、什么是RESTful
Respresentational State Transfer
1.表现层状态转移,由HTTP
协议的主要设计者Roy Fielding
提出
2.资源(Resources
),表现层(Representation
),状态转化(State Transfer
)
3.是一种以资源为中心的web
软件架构风格,可以用Ajax
和RESTful web
服务构建应用
RESTful
解释
1.Resources
(资源):使用URI
指向一个实体
2.Representation
(表现层):资源的表现形式,比如图片、html
文本等
3.State Transer
(状态转化):GET、POST、PUT、DELETE HTTP
动词来操作资源,实现资源状态的改变
RESTful
的准则
1.所有事物抽象为资源(resource
),资源对应唯一的标识(identifier
)
2.资源通过接口进行操作实现状态转移,操作本身是无状态的
3.对uqdir操作不会改变资源的标识
什么是RESTful API
?
RESTful
风格的API
接口:
1.通过HTTP
GET
/POST
/PUT
/DELETE
获取/新建/更新/删除 资源
2.一般使用JSON
格式返回数据
3.一般web
框架都有相应的插件支持RESTful API
四、如何设计RESTful API
?
HTTP方法 | URL | 动作 |
---|---|---|
GET | http://[hostname]/api/users | 检索用户列表 |
GET | http://[hostname]/api/users/[user_id] | 检索单个用户 |
POST | http://[hostname]/api/users | 创建新用户 |
PUT | http://[hostname]/api/users/[user_id] | 更新用户信息 |
DELETE | http://[hostname]/api/users/[user_id] | 删除用户 |
以Tornado
框架的RESTful API
示例:
imoprt tornado.web
from tornado.escape import json_encode
from models.user import UserModel
class UserListHandler(tornado.web.RequestHandler):
def get(self): # 批量获取用户
users = UserModel.get_all()
self.write(json_encode(users))
def post(self):
name = self.get_argument('name')
age = self.get_argument('age')
UserModel.create(name, age)
resp = {'status': True, 'msg': 'create success'}
self.write(json_encode(resp))
class UserHandler(tornado.web.RequestHandler):
def get(self, user_id):
try:
user = UserModel.get(int(user_id))
except KeyError:
return self.set_status(404)
self.write(json_encode(user))
def put(self, user_id):
age = self.get_argument('age')
UserModel.update(int(user_id), age)
resp = {'status': True, 'msg': 'update success'}
self.write(json_encode(resp))
def delete(self, user_id):
UserModel.delete(int(user_id))
resp = {'status': True, 'msg': 'delete success'}
self.write(json_encode(resp))
以上是关于9-3 前后端分离与 RESTful 常见面试题的主要内容,如果未能解决你的问题,请参考以下文章