zoukankan      html  css  js  c++  java
  • 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:"-",接口将不会将密码也一块返回。

    存储层

  • 相关阅读:
    网络知识 ACL NAT IPv6
    const用法
    单向链表排序
    文件系统
    protel DXP的类矢量图功能
    proteus画元件
    SD卡FAT32文件系统格式
    如何实现一个malloc函数
    sbrk and coreleft
    windows下常用快捷键
  • 原文地址:https://www.cnblogs.com/ljgeng/p/9733780.html
Copyright © 2011-2022 走看看