首页 > 其他分享 >Gorm接口

Gorm接口

时间:2023-09-28 11:22:08浏览次数:35  
标签:http err 接口 gorm json result news Gorm

package main

import (
"encoding/json"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"net/http"
"strconv"
)

// 新闻结构体
type News struct {
Id int `json:"id"`
Title string `json:"title"`
Content string `json:"content"`
Cate string `json:"cate"`
Author string `json:"author"`
Status string `json:"status"`
}

// 接口三要素 1。状态 2 提示信息 3数据
type JsonResponse struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
}

func main() {
http.HandleFunc("/news/add", NewsAdd) //添加
http.HandleFunc("/news/list", NewsList) //列表
http.HandleFunc("/news/delete", NewsDelete) //删除
http.HandleFunc("/news/search", NewsSearch) // 搜索
http.ListenAndServe(":8080", nil)
}

// 新闻添加接口
func NewsAdd(w http.ResponseWriter, r *http.Request) {
title := r.FormValue("title")
content := r.FormValue("content")
cate := r.FormValue("cate")
author := r.FormValue("author")
status := r.FormValue("status")

dsn := "root:root@tcp(127.0.0.1:8889)/week3?charset=utf8"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
news := News{
Title: title,
Content: content,
Cate: cate,
Author: author,
Status: status,
}
// 添加方法
err = db.Create(&news).Error
if err != nil {
result := JsonResponse{
Code: 500,
Message: "添加失败",
}
json.NewEncoder(w).Encode(result)
} else {
result := JsonResponse{
Code: 200,
Message: "添加成功",
}
json.NewEncoder(w).Encode(result)
}
}

// 列表接口
func NewsList(w http.ResponseWriter, r *http.Request) {
dsn := "root:root@tcp(127.0.0.1:8889)/week3?charset=utf8"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
var news []News
//查询
err = db.Limit(5).Find(&news).Error
if err != nil {
panic("数据库连接失败")
}
result := JsonResponse{
Code: 200,
Message: "success",
Data: news,
}
json.NewEncoder(w).Encode(result)
}

// 删除接口
func NewsDelete(w http.ResponseWriter, r *http.Request) {
dsn := "root:root@tcp(127.0.0.1:8889)/week3?charset=utf8"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
id, _ := strconv.Atoi(r.FormValue("id"))

news := News{
Id: id,
}
//删除
err = db.Delete(&news).Error
if err != nil {
result := JsonResponse{
Code: 500,
Message: "删除失败",
}
json.NewEncoder(w).Encode(result)
} else {
result := JsonResponse{
Code: 200,
Message: "删除成功",
}
json.NewEncoder(w).Encode(result)
}
}

func NewsSearch(w http.ResponseWriter, r *http.Request) {
keywords := r.FormValue("keywords")
if keywords == "" {
result := JsonResponse{
Code: 500,
Message: "参数不能为空",
}
json.NewEncoder(w).Encode(result)
}
dsn := "root:root@tcp(127.0.0.1:8889)/week3?charset=utf8"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
var news []News
err = db.Where("title like ? or content like ? ", "%"+keywords+"%", "%"+keywords+"%").Find(&news).Error
if err != nil {
result := JsonResponse{
Code: 404,
Message: "数据未查到",
}
json.NewEncoder(w).Encode(result)
} else {
result := JsonResponse{
Code: 200,
Message: "success",
Data: news,
}
json.NewEncoder(w).Encode(result)
}

}

标签:http,err,接口,gorm,json,result,news,Gorm
From: https://www.cnblogs.com/superzwb/p/17735280.html

相关文章

  • Sensor接口之——DVP接口
    DVPDVP(DigitalVideoPort)是传统的sensor输出接口,采用并行输出方式,数据位宽有8bit、10bit、12bit、16bit等。 DVP总线PCLK极限约在96M左右,而且走线长度不能过长,所有DVP最大速率最好控制在72M以下,PCBlayout较容易画,MIPI总线速率lvds接口耦合,走线必须差分等长,并且需要......
  • 270-VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡
    一、板卡概述       本板卡基于Xilinx公司的FPGA XC7VX690T-FFG1761 芯片,支持PCIeX8、两组 64bit DDR3容量8GByte,HPC的FMC连接器,板卡支持各种FMC子卡扩展。软件支持windows,Linux操作系统。   二、功能和技术指标: 板卡功能参数内容主处理器XC7V690T-2FFG17......
  • 如何保证Spring Boot接口安全的呢?
     在保证SpringBoot接口安全时,我们需要关注的主要方面包括:认证(Authentication)、授权(Authorization)、数据安全性(DataSecurity)、以及防止常见的Web安全威胁。认证(Authentication)在SpringSecurity中,认证是验证用户的过程。通过用户名和密码、OAuth2令牌、JWT(JSONWebTokens......
  • 车牌信息查询API接口:提供完整的车辆信息查询服务
    随着社会的发展,汽车已经成为人们生活的必需品。对于车主而言,车牌号是重要的身份标识,也是进行违法行为查询的重要信息。车牌号查询API接口可以提供完整的车辆信息查询服务,以方便用户查询自己的车辆信息或查询他人车辆信息以便进行    本文将结合挖数据平台的车牌信息查询......
  • 使用SpringBoot开发一个POST接口
    SpringBoot项目的分层SpringBoot框架项目一般分为五层:View层:向用户展示页面Controller层:前后端交互层,接收前端请求,调用Service层中的方法,接收Service层返回的数据并将其返回到前端。Service层:存放业务处理的逻辑,以及一些操作数据库的接口Mapper层:也可以成为DAO层,是数......
  • 新增问题接口
           ......
  • 接口自动化--postman(3)高级用法,全局变量和环境变量
    Postman提供了GUI界面的变量管理窗口,可以管理全局变量和环境变量全局变量:整个Postman都能使用的变量环境变量:选中环境后,才会全局生效的变量,叫做环境变量环境变量作用:可以通过变量进行参数化,方便集中管理测试数据;同时环境变量还可以起到快速切换环境的作用。Postman界面......
  • 分页查询回答或评论的接口设计
       ......
  • 【详解】Spring Boot + Mybatis-Plus实现CRUD,轻松玩转接口操作!
    ......
  • 管理端问题相关接口设计
        ......