/agenda-api-first

api-first agenda

Primary LanguageGoMIT LicenseMIT

服务程序开发实战 - Agenda

概述

利用命令行 或 web 客户端调用远端服务是服务开发的重要内容。其中,要点是如何实现 API First 开发,使得团队协作变得更有效率。

任务目标

  1. 熟悉 API 设计工具,实现从资源(领域)建模,到 API 设计的过程

  2. 使用 Github ,通过 API 文档,实现 agenda 命令行项目 与 RESTful 服务项目同步开发

  3. 使用 API 设计工具提供 Mock 服务,两个团队独立测试 API

  4. 使用 travis 测试相关模块

  5. 利用 dockerfile 在 docker hub 上构建一个镜像,同时包含 agenda cli 和 agenda service, 如果 mysql 包含 服务器 和 客户端一样

镜像截图

使用国内的Docker仓库daocloud。

跑hello-world的demo镜像。

使用golang:1.8生成镜像 docker build -t agenda

docker images

成功上传镜像到dockerhub。

服务器测试截图

gotest

UserLogin_success

UserLogin_fail

Logout_succeed

Logout_fail

CreateMeeting_succeed

CreateMeeting_fail

DeleteMeeting_succeed

DeleteMeeting_fail

QueryMeeting_succeed

命令行运行截图

用户注册

  1. 注册新用户时,用户需设置一个唯一的用户名和一个密码。另外,还需登记邮箱及电话信息。

  2. 如果注册时提供的用户名已由其他用户使用,应反馈一个适当的出错信息;成功注册后,亦应反馈一个成功注册的信息。

    main register --un=UserName --pw=password --email=a@xxx.com --phone=xxxxxx

正确输入: 此处输入图片的描述

此时User中记录了该条注册信息: 此处输入图片的描述

缺失信息: 此处输入图片的描述

用户名已占用: 此处输入图片的描述

用户登录

  1. 用户使用用户名和密码登录 Agenda 系统。

  2. 用户名和密码同时正确则登录成功并反馈一个成功登录的信息。否则,登录失败并反馈一个失败登录的信息。

    main login --un=UserName --pw=password

输入错误的账号密码,登录失败: 此处输入图片的描述

输入错误的账号密码,登录成功:

此处输入图片的描述

此时,CurUser文件中写着当前登录的账户名: 此处输入图片的描述

用户查询

  1. 已登录的用户可以查看已注册的所有用户的用户名、邮箱及电话信息。

   main query --un=UserName

新注册一个账号,并查询这个账号: 此处输入图片的描述

在没有登录的情况下,不能使用查询功能:

此处输入图片的描述

用户登出

  1. 已登录的用户登出系统后,只能使用用户注册和用户登录功能。

   main logout

登出成功,此时CurUser被销毁:

此处输入图片的描述

若没有登录就运行登出,则失败:

此处输入图片的描述

创建会议

1.会议名是否已经存在
2.所有参与者是否存在
3.会议的开始时间是否在结束时间之前
4.新会议是否和发起者参与者其他会议有时间冲突
当前用户是has,现有会议:

此处输入图片的描述

测试:

此处输入图片的描述

取消会议

用户可以取消自己作为sponser的会议

此处输入图片的描述

查询会议

用户输入时间段,agenda查询这个时间段内的所有会议

  1. 若该时间段内存在会议,agenda列出时间段内的所有会议。
  2. 若该时间段内不存在会议,agenda发出提示。

以下为json文件中以创建的会议:

此处输入图片的描述

 agenda qm --st=2017-08-01/00:00 --et=2017-12-01/00:00

agenda qm --st=1999-01-01/00:00 --et=2000-01-01/00:00

  1. 若该时间段内存在会议,agenda列出时间段内的所有会议。

  2. 若该时间段内不存在会议,agenda发出提示。

此处输入图片的描述

增删会议参与者

根据用户输入的会议名和用户名,agenda增删该会议参与者

  1. 若该会议存在,agenda增删该会议参与者 (1)若删除参与者后,会议参与者人数为零,agenda自动删除该会议
  2. 若该会议不存在,agenda发出提示。

addPr --title=happy --pr=newpPrhhhhh

delPr --title=new --pr=alice

该会议存在,agenda增删该会议参与者

此处输入图片的描述

以下为增删会议参与者后的json文件:

此处输入图片的描述

addPr --title=fruit --pr=orange

该会议不存在,agenda发出提示。

此处输入图片的描述

agenda delPr --title=new --pr=bob

agenda delPr --title=new --pr=daisy

删除参与者后,会议参与者人数为零,agenda自动删除该会议

此处输入图片的描述

以下为agenda自动删除该会议后的json文件:

此处输入图片的描述