QOR-CMS(4):关于admin的api模块,使用方法.json 方式访问

本文的原文连接是:
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

博主地址是:http://blog.csdn.net/freewebsys

猜你喜欢

转载自blog.csdn.net/freewebsys/article/details/80740454