iris_rest_framework

package module
v0.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2023 License: MIT Imports: 2 Imported by: 0

README

iris_rest_framework

介绍

基于iris和gorm的 api框架

安装

    go get github.com/weiheguang/iris_rest_framework

NewIrisApp

返回iris的app对象, 使用例子如下:

    c := IrisAppConfig{
        SettingsName string
        // 默认值: notFound
        NotFoundHandler iris.Handler
        // 默认值: internalServerError
        InternalServerErrorHandler iris.Handler
        // 是否启用swagger, 默认值: false, swagger 无法做到完全与main函数分离,不在这里初始化
        // EnableSwagger bool
        // 启用cache, 选项: cache.CacheTypeMem, cache.CacheTypeRedis, 默认值: cache.CacheTypeMem
        CacheType string
        // 是否初始化数据库, 默认值: false
        EnableDb bool
        // Auth处理函数, 返回user指针, 默认值: nil
        AuthFunc UserIdAuth
        // 启用jwt中间件, jwt中间件依赖环境变量: JWT_SECRET
        EnableJwt bool
    }
    app := NewIrisApp(&c)
    app.Run(iris.Addr(":8080"))

Settings 使用

使用例子2:

    // 通过 Settings 模块的快捷方法获取配置
    debug := settings.GetBool("DEBUG")
配置项
    # 数据库配置
    DATABASE_USER: "user"         # 数据库用户名
    DATABASE_PASSWORD: "password" # 数据库密码
    DATABASE_HOST: ""             # 数据库链接地址
    DATABASE_PORT: 3306           # 数据库端口
    DATABASE_DBNAME: "db"         # 数据库名字
    SQL_DEBUG: false              # 是否开启sql语句打印
    DEBUG: false                  # 是否开启debug模式

    # Redis缓存配置
    REDIS_HOST: ""             # redis链接地址
    REDIS_PASSWORD: "password" # redis密码
    REDIS_DB: 0                # redis数据库

    JWT_SECRET: "123456"       # jwt secret
    JWT_EXPIRE_IN: "7200"      # jwt 过期时间, 单位: 秒

    APP_NAME: "app"            # app 名字

db 数据库

使用例子:

    db := database.GetDb()
    u := User{Id: 1}
    db.Find(&u)

view

ListAPIView

获取表的列表数据, 使用例子如下:

conf := &ListAPIViewConf{
    // 要查询的表
    Model: User{},           
    // 设置查询字段
    FilterFields: []string{"name", "age", "id"},
}
rv := NewListAPIView(conf)
data := rv.List(ctx)

过滤字段说明: 过滤字段遵守django的过滤字段规则. 过滤字段必须被预先配置到 FilterFields 里面,否则过滤字段不起作用 分页参数不用配置, 会自动解析 过滤字段规则: 字段名字__过滤方法, 如: name__contains=weiheguang, "__" 为双横线分隔符 通过url查询字段, 如: /api/user?name=weiheguang&age=18 支持的过滤字段方法:

  • 分页: page=1&page_size=10
  • 精确等于: name=weiheguang 或者 name__exact=weiheguang.
  • 大于: age__gt=18
  • 大于等于: age__gte=18
  • 包含: name__contains=weiheguang
  • 字符串以xxx开头: name__startswith=xxx
  • 字符串以xxx结尾: name__endswith=xxx
  • in: age__in=18,19,20
  • 如有其他需求,欢迎提issue
RetrieveAPIView

根据pk获取单条数据, 使用例子如下:

    pk := ctx.Params().GetUint64Default("id", 0) // 获取url中的id
    conf := &RetrieveAPIViewConf{
        Model: rftests.User{},      // 要查询的表
    }
    rv := NewRetrieveAPIView(conf)
    data := rv.GetBy(ctx, pk)

Cache使用说明

    ca := cache.GetCache()
    ca.Set("test", "test", 10)

测试

  • 运行所有测试: go test -v ./... -run=".*" -cover
  • 运行一个包内测试: go test -v ./middleware/jwt -run=".*" -cover
  • 运行一个单独的测试: go test -v ./middleware/jwt -run="TestJwtInvalidToken" -cover
  • go test -v ./apps/user -run=".*" -cover
  • go test -v ./irisapp -run=".*" -cover
  • go test -v ./views -run="TestListView" -cover
  • go test -v ./views -run=".*" -cover

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type List added in v0.1.9

type List = views.ListAPIView

type ListAPIViewConf added in v0.1.9

type ListAPIViewConf = views.ListAPIViewConf

ListAPIViewConf 列表视图配置

type Map added in v0.1.9

type Map = alias.Map

type Retrieve added in v0.1.9

type Retrieve = views.RetrieveAPIView

type RetrieveAPIViewConf added in v0.1.9

type RetrieveAPIViewConf = views.RetrieveAPIViewConf

RetrieveAPIViewConf 详情视图配置

Directories

Path Synopsis
apps
middleware
jwt

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL