feat: complete API-driven projects with infrastructure and business acceptance
This commit is contained in:
60
examples/userService/api/user.api
Normal file
60
examples/userService/api/user.api
Normal file
@@ -0,0 +1,60 @@
|
||||
syntax = "v1"
|
||||
info (
|
||||
title: "User service reference"
|
||||
version: "1.0.0"
|
||||
)
|
||||
type (
|
||||
UserResp {
|
||||
ID int64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email"`
|
||||
CreatedAt string `json:"createdAt"`
|
||||
UpdatedAt string `json:"updatedAt"`
|
||||
}
|
||||
CreateUserReq {
|
||||
Name string `json:"name" binding:"required,max=100"`
|
||||
Email string `json:"email" binding:"required,email,max=254"`
|
||||
}
|
||||
UserIDReq {
|
||||
ID int64 `path:"id,range=[1:9007199254740991]"`
|
||||
}
|
||||
UpdateUserReq {
|
||||
ID int64 `path:"id,range=[1:9007199254740991]"`
|
||||
Name string `json:"name" binding:"required,max=100"`
|
||||
Email string `json:"email" binding:"required,email,max=254"`
|
||||
}
|
||||
ListUsersReq {
|
||||
Page int `form:"page,default=1,range=[1:1000000]"`
|
||||
PageSize int `form:"pageSize,default=20,range=[1:100]"`
|
||||
}
|
||||
UserPageResp {
|
||||
Items []UserResp `json:"items"`
|
||||
Total int `json:"total"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"pageSize"`
|
||||
}
|
||||
ExportResp {
|
||||
DownloadURL string `json:"downloadUrl"`
|
||||
}
|
||||
)
|
||||
@server (
|
||||
group: user
|
||||
prefix: /api/v1
|
||||
middleware: Auth
|
||||
)
|
||||
service user-api {
|
||||
@handler createUser
|
||||
@status 201
|
||||
post /users (CreateUserReq) returns (UserResp)
|
||||
@handler getUser
|
||||
get /users/:id (UserIDReq) returns (UserResp)
|
||||
@handler listUsers
|
||||
get /users (ListUsersReq) returns (UserPageResp)
|
||||
@handler updateUser
|
||||
put /users/:id (UpdateUserReq) returns (UserResp)
|
||||
@handler deleteUser
|
||||
delete /users/:id (UserIDReq)
|
||||
@doc "Export one user as a private text object with a short-lived download link"
|
||||
@handler exportUser
|
||||
post /users/:id/export (UserIDReq) returns (ExportResp)
|
||||
}
|
||||
Reference in New Issue
Block a user