syntax = "v1" @app ( defaultResponse: CommonResponse request: {"unknownQuery":"reject","utf8":"reject","charset":"utf8"} ) response CommonResponse ( codeType: int32 successCode: 0 errorCode: 9999 messageField: msg dataMode: always requestIdField: "-" ) type Item { Name string `json:"name"` } type Query { Mode string `form:"mode,optional"` Tags []string `form:"tags,optional"` } type Upload { Title string `multipart:"title" binding:"required,max=20"` Metadata Item `multipartJSON:"metadata"` Attachment File `file:"attachment,maxBytes=1024"` Extras []File `file:"extras,optional,maxFiles=2,maxBytes=512"` } @server (group: demo; middleware: RequireAccess) service business { @handler upload @body (mode: multipart; maxBytes: 4096; maxParts: 6; maxFieldBytes: 128) post /upload (Upload) returns (Item) @handler list get /list (Query) returns ([]Item) @handler nullable get /nullable (Query) returns (*Item) @handler nothing post /nothing returns (null) @handler rawNull @response raw get /rawNull returns (null) @handler rawArray @response raw get /rawArray returns ([]Item) @handler empty @request (body: emptyObject) post /empty returns (null) @handler absent @request (body: none) post /absent returns (null) @handler optional @request (body: optional) post /optional (Item) returns (Item) @handler echo post /echo (Item) returns (Item) @handler tolerant @request (unknownQuery: ignore; utf8: replace; charset: any) post /tolerant (Item) returns (Item) @handler noContent delete /noContent }