Coder Social home page Coder Social logo

restdemo's Introduction

用 Golang 快速开发 RESTful API

这是我 2018 年一个演讲上用的 demo,用 golang 实现一个五脏俱全的 API 项目。

计划大概写一篇博客做说明,但是还没抽出空来写,可以看当时的演讲 PPT ,大概只是个 提纲。项目根目录有个 PDF 文件就是。

2021年6月10日:

我看到偶尔还有同学通过PPT或者视频来到这个repo,这是三年前的代码,虽然各种原理和写法可以对着演讲参考, 但是代码本身和它的依赖都已经过时了。大家看个意思就好,这些年来,我也有很多新的经验,它都被反映在了我新的项目中。

这里有一个开源项目是我一直维护着的,代码也比较简洁,大家可以去看这个项目学习:

https://github.com/hack-fan/skadi

使用方法

只要安装了 docker ,并开启了 Swarm 模式,在项目目录执行:

docker stack deploy -c docker-compose.yml demo

如果安装了 make , 也可以直接 make up,会自动帮你执行以上语句。

然后访问 your-host:1328/swagger/index.html 可以看到所有的 api

如果没有开放 swarm 模式,也可以自行改改 compose 文件用 docker-compose 启动.

关于项目组织

开发微服务的时候,建议不用建太多文件夹来横向分层。尽量把同一个实体的模型和业务逻 辑全放一个文件里其实是最利于代码维护的。因为微服务项目每个服务维护的实体其实很少 ,所以并不会很乱。

现在文件看起来比较乱是因为有太多的公用模块,业务逻辑只有 note.go 一个文件。但 是实际上,真的写微服务的时候,最好做一个自己的公用 package,剩下的文件大部分就都 是业务文件了。可以参考我的 xske 这两个 demo

一些更新

还没有体现在这个 demo 里

  • uuid 库我现在已经弃用,更喜欢用 xid
  • 日志库 zap 比 logrus 更好
  • swag 其实可以把展示统一维护在项目之外,在 ci 的时候生成 json 文件,业务代码里 只有注释,不用提供 swagger 的 endpoint ,这样是侵入最小的。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.