Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yangfei4913438/goapiserver

A golang api server demo that contains usage of Redis and MySQL.
https://github.com/yangfei4913438/goapiserver

api-server beego golang language mysql redis

Last synced: 26 days ago
JSON representation

A golang api server demo that contains usage of Redis and MySQL.

Awesome Lists containing this project

README

        

# Go Demo API Server

| 版本号 | 说明 | 更新日期 | 更新者 |
| ----- | --- | ---------- | ---- |
| V1.0 | 初版 | 2018.12.30 | 杨飞 |
| V1.1 | 增加对 websocket 服务的支持 | 2019.05.09 | 杨飞 |
| V1.2 | 增加对 restful 请求支持 | 2019.06.25 | 杨飞 |

- [项目介绍](#项目介绍)
- [项目操作](#项目操作)
- [HTTP头部设置要求](#HTTP头部设置要求)
- [新增用户](#新增用户)
- [查询用户](#查询用户)
- [查询用户-分页](#查询用户-分页)
- [修改用户](#修改用户)
- [删除用户](#删除用户)
- [其他](#其他)

## 项目介绍

为了更好了整合本人的技术栈,也为了能够帮助到大家学习go语言,尽快掌握go语言的工程实践。

我通过一个简单的业务demo,也就是用户信息的增删查改,来实现一个golang后端API应用。

主要涵盖了下面这些技术点:
* 路由
* 过滤器
* 日志
* 静态配置文件
* 控制器
* 模型
* redis缓存
* MySQL数据库
* 多国语言处理
* websocket服务
* 登录登出功能
* restful请求

以后可能会增加更多的技术内容进来,比如etcd, nsq等内容,也欢迎大家一起来完善本项目,造福更多的新人朋友。

> **请注意:** websocket 不支持 6666 端口,请不要使用 6666 作为服务器的端口!!!

## 项目操作

### HTTP头部设置要求

| key | value | 必填 | 说明 |
| --- | ----- | ---- | --- |
| x-access-token | test | Y | token,鉴别用户权限。因为是demo, 所以这里是写死的。 |
| accept-language | zh-cn | N | 服务端有多语言支持的时候,会采用这里的语言返回数据。 |

### websocket 请求url

- 校验令牌,需要通过 url 传参的方式来传递

```bash
ws://127.0.0.1:7777/ws/hi?token=test
```

### 数据库表结构发生了变化,接口文档作废,待完善。。。

### 新增用户

- 方法和路由

```
POST 127.0.0.1:7777/test/api/v1/user
```

- 请求参数

| 参数 | 类型 | 必填 | 说明 |
| ---- | ------ | ---- | ------- |
| name | String | N | 用户姓名 |
| age | Int | N | 用户年龄 |
| email | String | N | 电子邮件 |

- 请求参数demo

```json
{
"name": "test",
"age": 18,
"email": "[email protected]"
}
```

- 响应

| 参数 | 类型 | 必填 | 说明 |
| ---- | ------ | ---- | ------- |
| code | String | Y | 状态码 |
| message | Int | Y | 状态信息 |

- 响应demo

```json
{
"code": 0,
"message": "用户添加成功!"
}
```

### 查询用户

- 方法和路由

```
GET 127.0.0.1:7777/test/api/v1/user?id=1
```

- 请求参数

| 参数 | 类型 | 必填 | 说明 |
| --- | ---- | ---- | ----- |
| id | int | Y | 数据库中生成的用户ID字段 |

- 响应

| 参数 | 类型 | 必填 | 说明 |
| ---- | ------ | ---- | ------ |
| id | Int | Y | 用户ID |
| name | String | Y | 用户姓名 |
| age | Int | Y | 用户年龄 |
| email | String | Y | 电子邮件 |

- 响应demo

```json
{
"id": 1,
"name": "test",
"age": 18,
"email": "[email protected]"
}
```

### 查询用户-分页

- 方法和路由

```
GET 127.0.0.1:7777/test/api/v1/users?page_num=1&page_size=5
```

- 请求参数

| 参数 | 类型 | 必填 | 说明 |
| --- | ---- | ---- | ----- |
| page_num | int | Y | 第几页 |
| page_size | int | Y | 每页有多少条记录 |

- 响应

| 参数 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ------ |
| total_num | Int | Y | 一共返回了多少条记录 |
| list | []User | Y | 返回用户列表,如果没有记录返回 null |

- 响应demo

```json
{
"total_num": 0,
"list": null
}
```

### 修改用户

- 方法和路由

```
PUT 127.0.0.1:7777/test/api/v1/user
```

- 请求参数

| 参数 | 类型 | 必填 | 说明 |
| ---- | ------ | ---- | ------- |
| id | Int | Y | 用户ID |
| name | String | N | 用户姓名 |
| age | Int | N | 用户年龄 |
| email | String | N | 电子邮件 |

- 请求参数demo

```json
{
"id": 1,
"name": "fei",
"age": 26
}
```

- 响应

| 参数 | 类型 | 必填 | 说明 |
| ---- | ------ | ---- | ------- |
| code | String | Y | 状态码 |
| message | Int | Y | 状态信息 |

- 响应demo

```json
{
"code": 0,
"message": "用户更新成功!"
}
```

### 删除用户

- 方法和路由

```
DELETE 127.0.0.1:7777/test/api/v1/user
```

- 请求参数

| 参数 | 类型 | 必填 | 说明 |
| ---- | ------ | ---- | ------ |
| id | Int | Y | 用户ID |

- 请求参数demo

```json
{
"id": 1
}
```

- 响应

| 参数 | 类型 | 必填 | 说明 |
| ---- | ------ | ---- | ------- |
| code | String | Y | 状态码 |
| message | Int | Y | 状态信息 |

- 响应demo

```json
{
"code": 0,
"message": "用户删除成功!"
}
```

## 其他

更多内容,陆续添加中,敬请期待。。。