Debian 10 开发一个go语言接口

Ws3年前分什么类13548

首先是安装go环境 

# 1、预备工作
sudo apt-get update
sudo apt-get -y install wget gcc make

# 2、下载go安装包
wget https://dl.google.com/go/go1.16.2.linux-amd64.tar.gz

# 3、解压
sudo tar -C /usr/local -xzf go1.16.2.linux-amd64.tar.gz

# 4、环境配置
nano /etc/profile
# 添加到末尾
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go

# 5、使配置生效
source /etc/profile

# 验证 / 打印 go 版本
 go version


go环境配置结束,进入正题,很多coder喜欢golang的高并发,但是我们这种小项目真的是~ 有些多余,纯体验下

1、go安装sql库,我用的MariaDB,就是Mysql的分支,用mysql的库就行

go get -u github.com/go-sql-driver/mysql
# 一般情况下,都是要设置代理的 github得翻一翻

2、直接代码展示了

package main

import (
    "database/sql"
    "encoding/json"
    "fmt"
    "net/http"
    "strconv"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    http.HandleFunc("/search", ocrHandler)
    http.ListenAndServe(":8080", nil)
}

func ocrHandler(w http.ResponseWriter, r *http.Request) {
    // 参数处理
    keyword := r.FormValue("keyword")
    page := 1
    pageParam := r.FormValue("page")
    if pageParam != "" {
        pageInt, err := strconv.Atoi(pageParam)
        if err == nil {
            page = pageInt
        }
    }


    // 连接数据库
    db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/VIVA")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    // 总数量
    var count int
    rowscount, err := db.Query("SELECT count(1) FROM ocr WHERE path LIKE ? or content LIKE ? ", "%"+keyword+"%",  "%"+keyword+"%")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer rowscount.Close()

    for rowscount.Next() {
      if err := rowscount.Scan(&count); err != nil {
          // 处理错误
          fmt.Println(err)
          return
      }
    }

    if err := rowscount.Err(); err != nil {
        // 处理错误
        fmt.Println(err)
        return
    }

    // 查询数据
    offset := (page - 1) * 20
    rows, err := db.Query("SELECT id,title,path FROM ocr WHERE path LIKE ? or content LIKE ? ORDER BY id DESC LIMIT ?, 20", "%"+keyword+"%",  "%"+keyword+"%", offset)

    if err != nil {
        fmt.Println(err)
        return
    }
    defer rows.Close()

    // 解析结果
    var ocrs []map[string]interface{}
    for rows.Next() {
        var id int
        var path string
        var title string
        err := rows.Scan(&id,&path,&title)
        if err != nil {
            fmt.Println(err)
            continue
        }

        ocr := map[string]interface{}{
            "id":id,
            "path":path,
        }


        ocrs = append(ocrs, ocr)
    }

    // 输出结果
    data := map[string]interface{}{
        "code": 200,
        "msg":  "success",
        "data":map[string]interface{}{
          "total" : count,
          "lists" : ocrs,
        },
    }
    json.NewEncoder(w).Encode(data)
}

3、接着编译下,就可以执行了

go build main.go
./main

4、配置api接口自动启动

# /etc/systemd/system/main.service
[Unit]
Description=Search API for OCR
After=network.target

[Service]
Type=simple
WorkingDirectory=/usr/bin/goLang
ExecStart=/usr/bin/goLang/main
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target

5、对应服务命令

# 启动服务
sudo systemctl start main.service

# 停止服务
sudo systemctl stop main.service

# 重启服务
sudo systemctl restart main.service

# 查看服务状态
sudo systemctl status main.service

# 开机启动服务
sudo systemctl enable main.service

# 禁用开机启动服务
sudo systemctl disable main.service


标签: go lang

相关文章

AI救命还是AI要命?同一周,21亿砸向AI药物发现,少年却因ChatGPT的建议身亡

AI救命还是AI要命?同一周,21亿砸向AI药物发现,少年却因ChatGPT的建议身亡

这周的两条医疗AI新闻,放在一起看格外刺眼。 一条是诺贝尔奖得主、Google DeepMind CEO Demis Hassabis宣布:其AI药物发现公司Isomorphic Labs获得21亿...

00后少年在自家客厅完成全基因组测序,成本从27亿降到1100美元

00后少年在自家客厅完成全基因组测序,成本从27亿降到1100美元

2003年,人类首次完成全基因组测序,耗时13年、花费27亿美元。2026年,一位00后少年在自家客厅餐桌上,用二手设备和AI模型完成了同样的工作——总成本约1100美元。 成本降低了245万倍。而...

AI周报2026-02

AI 模型 Claude(Anthropic) 核心结论:Claude 模型可在数秒内分析财务报表并生成投资备忘录。 补充完善:演示显示模型处理完整财务报表并快速输出结构化投资备忘录,突出高度自...

mpvue vant 做个简单的核销小程序

我们公司业务一般偏营销,小程序的属性在营销这块没有那么明显,所以很少会有小程序的业务,这次也是帮朋友的忙,用mpvue+vant做了个简单的应用。应用不复杂,但是大部分的功能也都用到了,比如生成/扫描...

predis 配合 supervisord 做消息队列

不是完整的代码,了解大概用。我的测试服务器比较老。centos 6.5yum install supervisord  // 直接安装安装解释后,配置...

Anthropic CEO 惊人预言:GDP 暴涨 10%、软件免费、程序员消失

Anthropic CEO 惊人预言:GDP 暴涨 10%、软件免费、程序员消失

Anthropic CEO Dario Amodei 在《华尔街日报》采访中发表了一系列关于 AI 对未来经济与就业格局的惊人预测。这些观点正在硅谷引发激烈讨论——不是因为它们太科幻,而是因为它们...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。