本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/80740454
博主地址是:http://blog.csdn.net/freewebsys
前言
https://getqor.com/cn
QOR经过全新架构,以加速开发与部署内容管理系统(CMS)、电子商务系统和业务应用程序。QOR由这类系统中抽象出的通用功能模块构成,其中包含灵活可配置的后台、内容发布系统、媒体库等等。
文档:
https://doc.getqor.com/
代码:
https://github.com/golangpkg/qor-cms-demos
全部qor文章:
https://blog.csdn.net/freewebsys/article/category/7742598
1,关于api
默认qor启动admin之后有了api的接口了。
直接访问就可以了。
https://doc.getqor.com/admin/restful_api.html
2,代码演示
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite"
"github.com/qor/admin"
"net/http"
"database/sql"
"fmt"
"github.com/qor/qor"
"github.com/golangpkg/go-admin-api/models"
)
//声明全局变量
var (
// 注册数据库,可以是sqlite3 也可以是 mysql 换下驱动就可以了。
DB, _ = gorm.Open("sqlite3", "demo.db")
// 初始化admin 还有其他的,比如API
API = admin.New(&qor.Config{DB: DB})
)
func init() {
//用户
type User struct {
gorm.Model
Email string
Password string
Name sql.NullString
Gender string
Active bool
}
DB.AutoMigrate(&User{}) //自动创建表。
// Add it to Admin
user := API.AddResource(&User{})
user.Action(&admin.Action{
Name: "enable",
Handler: func(actionArgument *admin.ActionArgument) error {
// `FindSelectedRecords` => in bulk action mode, will return all checked records, in other mode, will return current record
for _, record := range actionArgument.FindSelectedRecords() {
actionArgument.Context.DB.Model(record.(*models.User)).Update("Active", true)
}
return nil
},
})
fmt.Println(user)
}
func main() {
// 启动服务
mux := http.NewServeMux()
API.MountTo("/api/v1", mux)
http.ListenAndServe(":9000", mux)
}
直接访问还是那个admin系统。
GET /api/v1/users.json - 列表
GET /api/v1/users/1.json - 获得第一个数据
POST /api/v1/users - 创建
PUT /api/v1/users/12 - 更新
DELETE /api/v1/users/12 - 删除
3,展示
如果加上一个后缀 .xml 就返回xml的格式数据。
在admin系统中,保存,更新数据都是一样的。获得数据的时候才用 .json 的形式。
4,总结
admin系统本身也是按照这个 ajax的api进行开发的。接口都是一样的。
把接口单独拆分,研究下。
支持多个格式。admin系统中是这样的。
同时要是有权限验证的时候这个接口也一样进行拦截。
唯一不好的是对api 接口的定制不全面。
要是能够像swagger那样定义也是很方便。直接可以给客户端同学做接口了。
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/80740454