# API 定义 ## devops.api ```go 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) } ``` ## 生成代码 ```bash cd backend goctl api go -api api/devops.api -dir . ``` ## 接口说明 ### 1. 获取登录链接 **GET** `/api/v1/auth/login-url` **响应:** ```json { "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} ``` **响应:** ```json { "id": 1, "username": "testuser", "email": "test@example.com", "role": "member", "status": 1 } ```