Golang学习系列第五天: Golang和PostgreSQL开发 RESTful API

本文介绍了如何使用Golang和Gorilla框架配合PostgreSQL数据库开发RESTful API接口。从建库建表到实现文章的增删改查功能,详细讲解每个步骤,包括创建工程目录、定义文章实体、建立JSON响应格式、设置数据库连接、创建API接口以及进行接口测试。此外,还探讨了为何在某些场景下仍选择Java进行微服务开发。
摘要由CSDN通过智能技术生成

 

 继Golang学习系列第四天:操作数据库PostgreSQL,今天开始学习Golang和PostgreSQL开发 RESTful API接口,以Gorilla 为例。

 

1.  前言

我们经常会用csdn、博客园、掘金、抖音、infoq、medium等写文稿分享,我就以此写个这样的restful api接口,我写的是前后端分离式的接口(至于他们的是不是前后端一起或分离我就不知道了,也不想考究)。

一篇文章会有标题、子标题、摘要、背景图片、具体内容、文章分类、文章标签、文章作者(可能是联名写的,就像写书时多名作者)、发布时间、更新时间、文章类型(自己写的、转载的、或翻译老外的(比如掘金上就有不少))、是否置顶、是否被推荐、预计读的时间、浏览量、文章状态(拟稿、已发布、已逻辑删除)。

 

2.  构建文章 restful api 接口

注:我只写基本的文章api接口

2.1  建库建表

进入到数据库环境中,创建数据库csdn,然后创建文章表结构,我没有使用那么多字段列。

[root@master ~]# psql -h 192.168.8.200 -p 5432 -U postgres
psql (12.3)
Type "help" for help.

postgres=# CREATE DATABASE csdn;
CREATE DATABASE
postgres=# \c csdn
You are now connected to database "csdn" as user "postgres".
csdn=# CREATE TABLE article (
csdn(#     id SERIAL PRIMARY KEY,
csdn(#     title   char(100),
csdn(#     content text,
csdn(#     category  text ARRAY[4],
csdn(#     tag  text ARRAY[4],
csdn(#     type  char(10),
csdn(#     author  text ARRAY[10]
csdn(# );
CREATE TABLE
csdn=# INSERT INTO article VALUES (1,
csdn(# 'Golang学习系列第五天: Golang和PostgreSQL开发 RESTful API',
csdn(# '用go和postgresql开发restful api接口的过程',
csdn(# ARRAY['golang','postgresql'],
csdn(# ARRAY['golang', 'go','postgresql'],
csdn(# '原创',
csdn(# ARRAY['dongguangming', 'dgm']
csdn(# );
INSERT 0 1
csdn=# select * from article;
 id |                                                      title                                                      |                  conte
nt                  |      category       |          tag           |     type     |       author        
----+-----------------------------------------------------------------------------------------------------------------+-----------------------
--------------------+---------------------+------------------------+--------------+---------------------
  1 | Golang学习系列第五天: Golang和PostgreSQL开发 RESTful API                                                       | 用go和postgresql开发re
stful api接口的过程 | {golang,postgresql} | {golang,go,postgresql} | 原创         | {dongguangming,dgm}
(1 row)

csdn=# 

 

2. 2  开始golang开发接口

2.2.1  新建工程csdn

建工程目录csdn,并创建相应的子文件夹(类似于mvc那套结构)

[root@master ~]# cd /dongguangming/goworkspace/
[root@master goworkspace]# pwd
/dongguangming/goworkspace
[root@master goworkspace]# mkdir csdn csdn/{models,middlewares,responses,api}
[root@master goworkspace]# cd csdn/

然后初始化自定义模块

go mod init csdn

查看对应的目录结构

接着创建具体的实物model,http响应数据格式,数据库连接

2.2.2  新建文章实体

先建article.go文件

[root@master csdn]# touch models/article.go

,键入以下代码

package models

import (
	"errors"
	"github.com/jinzhu/gorm"
	"strings"
)

type Article struct {
	gorm.Model
	Title        string `gorm:"size:100;not null;unique" json:"title"`
	Content      string `gorm:"not null"                 json:"content"`
	Category     string `gorm:"size:50;not null"         json:"category"`
	Tag          string `gorm:"size:50;not null"         json:"tag"`
  Author       string `gorm:"size:50;not null"         json:"author"`
}

func (article *Article) Prepare() {
	article.Title = strings.TrimSpace(article.Title)
	article.Content = strings.TrimSpace(article.Content)
	article.Category = strings.TrimSpace(article.Category)
	article.Tag = strings.TrimSpace(article.Tag)
	article.Author = strings.TrimSpace(article.Author)
}

func (article *Article) Validate() error {
	if article.Title == "" {
		return errors.New("Name is required")
	}
	if article.Content == "" {
		return errors.New("Description about ven
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值