Day 14 - 完成Web App
在Web App框架和基本流程跑通后,剩下的工作全部是体力活了:在Debug开发模式下完成后端所有API、前端所有页面。我们需要做的事情包括:
把当前用户绑定到 request 上,并对URL manage 进行拦截,检查当前用户是否是管理员身份:
@asyncio.coroutine
def authfactory(app, handler):
@asyncio.coroutine
def auth(request):
logging.info('check user: %s %s' % (request.method, request.path))
request.user = None
cookiestr = request.cookies.get(COOKIENAME)
if cookiestr:
user = yield from cookie2user(cookiestr)
if user:
logging.info('set current user: %s' % user.email)
request._user = user
if request.path.startswith('manage') and (request.__user is None or not request.__user.admin):
return web.HTTPFound('/signin')
return (yield from handler(request))
return auth
后端API包括:
获取日志:GET apiblogs
创建日志:POST apiblogs
修改日志:POST apiblogs/:blog_id
删除日志:POST apiblogs/:blog_id/delete
获取评论:GET apicomments
创建评论:POST apiblogs/:blog_id/comments
删除评论:POST apicomments/:comment_id/delete
创建新用户:POST apiusers
获取用户:GET apiusers
管理页面包括:
评论列表页:GET managecomments
日志列表页:GET manageblogs
创建日志页:GET manageblogs/create
修改日志页:GET manageblogs/
用户列表页:GET manageusers
用户浏览页面包括:
注册页:GET /register
登录页:GET /signin
注销页:GET /signout
首页:GET /
日志详情页:GET blog:blog_id
把所有的功能实现,我们第一个Web App就宣告完成!