You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1.7 KiB

API 定义

devops.api

syntax = "v1"

info(
	title: "DevOps API"
	desc: "DevOps 平台 API 定义"
	author: "DevOps Team"
	version: "1.0"
)

type (
	// 登录相关
	LoginUrlResp {
		LoginUrl string `json:"login_url"`
	}

	CallbackReq {
		Code  string `form:"code"`
		State string `form:"state,optional"`
	}

	CallbackResp {
		Token     string   `json:"token"`
		ExpiresAt int64    `json:"expires_at"`
		User      UserInfo `json:"user"`
	}

	UserInfo {
		Id        int64  `json:"id"`
		Username  string `json:"username"`
		Email     string `json:"email"`
		Status    int    `json:"status"`
		CreatedAt string `json:"created_at"`
	}

	UserResp {
		Id       int64  `json:"id"`
		Username string `json:"username"`
		Email    string `json:"email"`
		Role     string `json:"role"`
		Status   int    `json:"status"`
	}
)

service devops-api {
	@handler getLoginUrlHandler
	get /api/v1/auth/login-url returns (LoginUrlResp)

	@handler callbackHandler
	get /api/v1/auth/callback (CallbackReq) returns (CallbackResp)

	@handler getUserHandler
	get /api/v1/auth/user returns (UserResp)
}

生成代码

cd backend
goctl api go -api api/devops.api -dir .

接口说明

1. 获取登录链接

GET /api/v1/auth/login-url

响应:

{
  "login_url": "https://casdoor.example.com/login/oauth/authorize?client_id=xxx&..."
}

2. 登录回调

GET /api/v1/auth/callback?code=xxx&state=yyy

由 Casdoor 重定向调用,返回 HTML 页面。

3. 获取当前用户

GET /api/v1/auth/user

请求头:

Authorization: Bearer {token}

响应:

{
  "id": 1,
  "username": "testuser",
  "email": "test@example.com",
  "role": "member",
  "status": 1
}