api-interface-design
26
总安装量
26
周安装量
#7734
全站排名
安装命令
npx skills add https://github.com/tencentblueking/bk-ci --skill api-interface-design
Agent 安装分布
claude-code
16
gemini-cli
15
opencode
14
codex
13
cursor
13
antigravity
12
Skill 文档
API æ¥å£è®¾è®¡
Quick Reference
è·¯å¾æ ¼å¼ï¼/{scope}/{resource}/{resourceId}/{subResource}
è·¯å¾åç¼ï¼/user/(Web) | /service/(å
é¨) | /build/(Agent) | /open/(å¤é¨)
è¿åæ ¼å¼ï¼Result<T> { status, message, data }
åé¡µæ ¼å¼ï¼Page<T> { count, page, pageSize, totalPages, records }
éè¯¯ç æ ¼å¼ï¼21(å¹³å°)01(æå¡)001(ä¸å¡ç ) â å¦ 2100013 = æ æåæ°
æç®ç¤ºä¾
@Tag(name = "USER_PIPELINE", description = "ç¨æ·-æµæ°´çº¿èµæº")
@Path("/user/pipelines")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
interface UserPipelineResource {
@Operation(summary = "è·åæµæ°´çº¿å表")
@GET
@Path("/")
fun list(
@Parameter(description = "ç¨æ·ID", required = true)
@HeaderParam(AUTH_HEADER_USER_ID) userId: String,
@Parameter(description = "项ç®ID", required = true)
@PathParam("projectId") projectId: String,
@QueryParam("page") page: Int?,
@QueryParam("pageSize") pageSize: Int?
): Result<Page<PipelineInfo>>
}
When to Use
- 设计 RESTful API æ¥å£
- å®ä¹ Resource ç±»
- éè¦äºè§£é误ç è§è
- 设计请æ±/ååºæ°æ®ç»æ
When NOT to Use
- å®ç°ä¸å¡é»è¾ â 使ç¨
01-backend-microservice-development - åæ°æ ¡éªè§å â 使ç¨
common-technical-practices(reference/4-parameter-validation.md)
è·¯å¾å½åè§è
| è·¯å¾åç¼ | ç¨é | è°ç¨æ¹ |
|---|---|---|
/user/ |
ç¨æ·ææ¥å£ | å端 Web |
/service/ |
æå¡é´è°ç¨ | å ¶ä»å¾®æå¡ |
/build/ |
æå»ºç¸å ³ | Agent/Worker |
/open/ |
对å¤å¼æ¾ | ç¬¬ä¸æ¹ç³»ç» |
HTTP ç¶æç 使ç¨
| ç¶æç | åºæ¯ |
|---|---|
| 200 | è¯·æ±æå |
| 201 | å建æå |
| 400 | 请æ±åæ°é误 |
| 401 | æªè®¤è¯ |
| 403 | æ æé |
| 404 | èµæºä¸åå¨ |
| 500 | æå¡å¨å é¨é误 |
é误ç è§è
21(å¹³å°)01(æå¡)001(ä¸å¡ç )
å¹³å°ï¼21 = BK-CI
æå¡ï¼01 = éç¨, 02 = process, 03 = project ...
ä¸å¡ç ï¼001-999 = å
·ä½é误
æåºé误
throw ErrorCodeException(
statusCode = 400,
errorCode = "2100013",
defaultMessage = "æ æåæ°",
params = arrayOf(paramName)
)
ç»ä¸è¿åæ ¼å¼
// æåè¿å
data class Result<T>(
val status: Int, // ç¶æç
val message: String?, // æç¤ºä¿¡æ¯
val data: T? // è¿åæ°æ®
)
// å页è¿å
data class Page<T>(
val count: Long, // æ»æ°
val page: Int, // å½å页
val pageSize: Int, // æ¯é¡µæ°é
val totalPages: Int, // æ»é¡µæ°
val records: List<T> // æ°æ®å表
)
请æ±/ååºå¯¹è±¡å½å
| ç±»å | å½åæ¨¡å¼ | ç¤ºä¾ |
|---|---|---|
| åå»ºè¯·æ± | [Resource]CreateRequest |
PipelineCreateRequest |
| æ´æ°è¯·æ± | [Resource]UpdateRequest |
PipelineUpdateRequest |
| 详æ ååº | [Resource]Info |
PipelineInfo |
| å表项 | [Resource]Summary |
PipelineSummary |
æ¥å£çæ¬ç®¡ç
@Path("/v3/user/pipelines") // v3 çæ¬
@Path("/v4/user/pipelines") // v4 çæ¬
Checklist
设计 API å确认ï¼
- è·¯å¾åç¼ç¬¦åè°ç¨æ¹åºæ¯
- ä½¿ç¨æ£ç¡®ç HTTP æ¹æ³
- è¿åå¼ä½¿ç¨
Result<T>å è£ - å页æ¥å£ä½¿ç¨
Page<T> - é误ç 符åè§èæ ¼å¼
- æ·»å 宿´ç Swagger 注解