IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Golang 使用 gin gorm 编写Restful API(一) -> 正文阅读

[大数据]Golang 使用 gin gorm 编写Restful API(一)

1. PostgreSQL的安装与使用

1.1 PostgreSQL安装

PostgreSQL的安装比较简单,之前没有使用过的小伙伴们请移步 PostgreSQL安装与使用教程

1.2 建库建表

创建数据库:

CREATE DATABASE test WITH OWNER = postgres;

创建student表:

CREATE TABLE IF NOT EXISTS public.student
(
    id bigint NOT NULL DEFAULT nextval('t_student_id_seq'::regclass),
    name text COLLATE pg_catalog."default" NOT NULL,
    age integer NOT NULL,
    CONSTRAINT t_student_pkey PRIMARY KEY (id)
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS public.t_student
    OWNER to postgres;

注:这里可以省略表的创建,因为GORM会自动创建一个表名为实体同名复数形式的表

2. Go编写web server

2.1 添加相关依赖

gin 依赖安装:

go get -u github.com/gin-gonic/gin

GORM 库安装:

go get -u github.com/jinzhu/gorm

2.2 实体类

编写一个实体类student.go与数据的表对应

package entity

type Student struct {
	Id   int    `gorm:"primary_key" json:"id"`
	Name string `json:"name"`
	Age  int    `json:"age"`
}

2.3 数据库连接

通过GORM连接postgreSQL,进行数据库的CURD操作

建立连接:

db, err := gorm.Open("postgres", "host=101.35.54.34 port=5432 user=postgres dbname=test password=root sslmode=disable")

注:如果不添加 sslmode=disable,会产生如下error:

pq: SSL is not enabled on the server

新增数据:

func AddStudent(student *entity.Student) {
	db := ConnectDB()
	db.Create(student)
	defer db.Close()
}

查询数据:

func GetAll() (students []entity.Student) {
	db := ConnectDB()
	// 查询所有
	db.Find(&students)
	defer db.Close()
	return students
}

完成dao.go 代码如下:

package dao

import (
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/postgres"
	"gorm_demo/entity"
	"log"
)

func ConnectDB() (db *gorm.DB) {
	db, err := gorm.Open("postgres", "host=127.0.0.1 port=5432 user=postgres dbname=test password=root sslmode=disable")
	if err != nil {
		log.Println("connect postgreSQL fail")
		panic(err)
	}
	db.AutoMigrate(&entity.Student{})
	return db
}

func GetAll() (students []entity.Student) {
	db := ConnectDB()
	// 查询所有
	db.Find(&students)
	defer db.Close()
	return students
}

func AddStudent(student *entity.Student) {
	db := ConnectDB()
	db.Create(student)
	defer db.Close()
}

2.3 定义Restful API

通过gin定义api, app.go完成代码如下:

package app

import (
	"gorm_demo/dao"
	"gorm_demo/entity"
	"net/http"
)
import "github.com/gin-gonic/gin"

func App() {
	engine := gin.Default()
	api := engine.Group("/v1/test")
	{
		// 查询所有
		api.GET("/", func(context *gin.Context) {
			// 进行查询
			students := dao.GetAll()
			context.JSON(http.StatusOK, gin.H{
				"data": students,
			})
		})
		// 插入数据
		api.POST("/add", func(context *gin.Context) {
			student := entity.Student{Name: "阿盲", Age: 26}
			dao.AddStudent(&student)
			context.JSON(http.StatusOK, gin.H{
				"msg": "success",
			})
		})
	}
	// 监听 9090端口
	engine.Run(":9090")
}

2.4 程序入口

最后是我们程序入口main.go,直接调用APP()方法

package main

import "gorm_demo/app"

func main()  {
	app.App()
}

启动程序,监听9090端口

3. 接口测试

3.1 插入数据

GET http://localhost:9090/v1/test

使用Postman发起请求,由于具体的数据是在代码中写死插入,所以没有进行穿参,返回的结果与代码中的返回一致
在这里插入图片描述

3.2 查询数据

通过查询接口验证插入数据是否成功

POST http://localhost:9090/v1/test/add
在这里插入图片描述
查询出的与之前插入的数据一致,所以接口测试成功!

4. 项目结构图

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:49:12  更:2021-12-23 15:51:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:05:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码