使用golang创建web apis的POC(附代码)

247 阅读1分钟

使用golang的网络API

这是一个使用golang创建网络API的POC。它没有使用像六边形架构那样的好的架构。
但是,它包含了使用PostgreSQL和Migrations的CRUD。

使用的软件包

  • gorm.io/gorm
  • github.com/gin-gonic/gin
  • gorm.io/driver/postgres

如何运行

我假设你的本地机器上安装了docker。因此,你必须执行该命令:

docker-compose up --build

然后,你就可以执行API了:

go run main.go

也有必要安装golang。

文档

创建

curl --location --request POST 'http://localhost:5000/api/v1/users' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Wagner"
}'

你将收到:

{
    "id": 1,
    "name": "Wagner",
    "created": "2021-08-05T10:17:50.026339526-07:00",
    "updated": "2021-08-05T10:17:50.026339526-07:00",
    "deleted": null
}

通过ID获取

curl --location --request GET 'http://localhost:5000/api/v1/users/1'

你将会收到:

{
    "id": 1,
    "name": "Wagner",
    "created": "2021-08-05T10:56:32.197227-07:00",
    "updated": "2021-08-05T10:56:32.197227-07:00",
    "deleted": null
}

获取所有

curl --location --request GET 'http://localhost:5000/api/v1/users'

你将收到

[
    {
        "id": 1,
        "name": "Wagner",
        "created": "2021-08-05T10:17:50.026339-07:00",
        "updated": "2021-08-05T10:17:50.026339-07:00",
        "deleted": null
    }
]

更新

curl --location --request PATCH 'http://localhost:5000/api/v1/users' \
--header 'Content-Type: application/json' \
--data-raw '{
    "id": 1,
    "name": "Wagner marques"
}'

您将收到

{
    "id": 1,
    "name": "Wagner marques",
    "created": "2021-08-05T10:56:32.197227-07:00",
    "updated": "2021-08-05T10:56:32.197227-07:00",
    "deleted": null
}

删除

curl --location --request DELETE 'http://localhost:5000/api/v1/users/1'

你将会收到一个状态 204

如何改进

更新端点在请求体中接收的是ID。尝试改变它并使用请求路径发送用户ID。)