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
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
}