syntax = "v1" info ( title: "Configurable response example" version: "1.0.0" ) // Define the public body once. No field names are required by the framework. response CommonResponse ( body: { "code": "${code}", "msg": "${message}", "data": "${data}" } codeType: int32 successCode: 200 errorCode: 9999 successMessage: "操作成功" dataMode: always codes: {"ITEM_NOT_FOUND":404001} messages: {"ITEM_NOT_FOUND":"记录不存在"} ) response PartnerResponse ( body: {"accepted":"${ok}","payload":"${data}","meta":{"trace":"${requestId}"}} errorBody: {"accepted":"${ok}","error":{"reason":"${message}"}} ) error ItemNotFound 404 "ITEM_NOT_FOUND" "item not found" type ItemReq { ItemID int64 `path:"itemId" binding:"min=1"` } type ItemResp { ItemID int64 `json:"itemId"` Name string `json:"name"` } @server ( group: items prefix: /api response: CommonResponse ) service response-api { @errors ItemNotFound @handler getItem get /items/:itemId (ItemReq) returns (ItemResp) // Success is the ItemResp object itself; errors still use CommonResponse. @response raw @handler rawItem get /rawItems/:itemId (ItemReq) returns (ItemResp) @response PartnerResponse @handler partnerItem get /partnerItems/:itemId (ItemReq) returns (ItemResp) }