golang 接口开发入门01- 从0开始构建项目

Posted ljgeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 接口开发入门01- 从0开始构建项目相关的知识,希望对你有一定的参考价值。

之前写了两篇golang开发入门文章,太过潦草,赶着10.1 放假的前夕,想着还是要认真对待自己写的东西,记录学习的点滴,以后也许会忘了现在学习的东西,但是好歹留下一些文字,同时也希望能给花时间读我博客的人真正有些帮助。

前期准备

因为golang 之前断断续续学过一点,所以现在就以开发一个用户管理这样简单的功能入手。如果你现在在看我的这篇文章,你需要要具备以下知识点

  • 1、golang 开发环境搭建
  • 2、golang 的基本语法
  • 3、面向对象和mvc开发思想

搭建项目

我使用eclipse作为开发工具,项目目录按照传统的mvc分层思想进行构建,结构如下:

src
 domain     -- 领域,其实就是用struct来表示一些对象
 store      -- 存储层,主要操作数据库
 web        -- 接口层,对外提供访问接口    
 main.go    -- 入口类

细心的朋友可能已经发现了,上面的结构少了业务层,这是因为刚开始我的用户管理只是简单的CRUD(增删改查)操作,没有复杂的逻辑,之后如果涉及更复杂的业务,会再添加业务处理层。我已经将代码上传到了github上,你可以点击hiuser访问,在项目src/v1.0.learn 目录下可以看到本篇文章涉及的所有代码,如果你发现了代码有任何不合理的地方,欢迎向我提出,在此先行谢过。

需求与设计

我假设的需求场景是这样的:现在有一个在线的文件浏览系统,这个系统不会有太多的使用用户,它的功能主要就是将服务器本地的一个文件目录映射到网络上,不同的用户登录后,都给他在目录下分配一个子目录,用户在这个子目录上可以上传下载文件,起到了一个简易的网盘作用。golang实际上有一个非常不错的开源项目已经实现了上述的需求,而且功能更加强大,它就是filebrower,本篇文章以及后续的更新,也是参考这个项目来学习的。

本章并不考虑需求中文件相关的部分,而是单独来看用户,首先这个系统会有一个管理员,他至少应该具有以下功能:

  • 1、他能能够创建其他人员,并且给他指定文件子目录;
  • 2、他能够查询所有人员及人员对应的目录;
  • 3、他可以修改人员对应的子目录;
  • 4、他可以删除人员;

不管是管理员还是普通用户,都应该可以:

  • 5、登录系统;
  • 6、登录后修改密码;

根据上述的几点需求,来设计一套restful接口,关于登录会在之后的文章中进行完善,本章实现用户的CRUD操作。详细的设计文档,可以到github上查看,地址:接口文档

开发实现

本系列使用boltdb数据库来存储用户的信息,关于boltdb的使用,我将在下一章中详细介绍;而对于接口的实现,先不使用任何框架,直接使用golang自带的http模块。

定义用户

在domain目录下新建个users.go文件,该文件来定义用户的详细信息;

// 用户实体
type User struct {
    // 主键
    Id    int    `json:"id"`
    Login string `json:"login"`
    // 用户登录名
    Name string `json:"name"`
    // 登录密码
    Password string `json:"-"`
    Path     string `json:"path"`
}

通过golang的struct(结构体)来定义用户对象,字段后面json:xxx标签的目的是自定义json序列化之后如何展示,通过json:login标识后最终接口返回的字段名称将会是login而不是默认的Login;通过添加json:"-",接口将不会将密码也一块返回。

存储层

以上是关于golang 接口开发入门01- 从0开始构建项目的主要内容,如果未能解决你的问题,请参考以下文章

Golang入门到项目实战 | golang接口嵌套

Golang入门到项目实战 | golang接口

Golang入门到项目实战 | golang接口和类型的关系

Golang入门到项目实战 | golang接口值类型接收者和指针类型接收者

Golang入门到项目实战 | golang接口值类型接收者和指针类型接收者

初学者入门 Golang 的学习型项目