3个版本 (1个稳定版)

1.0.0 2024年6月28日
0.2.0 2024年3月7日
0.1.0 2024年2月29日

#7#func

每月下载 27次
5 crates 中使用

MIT 协议

105KB
2K SLoC

Dce宏

api(): proc_macro_attribute

类似属性的宏,您可以使用它来定义api,它会自动绑定控制器函数。

参数

  • path &str:
    路由路径,如果省略,将是控制器函数名,例如 "part1/part2",支持如下表中的路径参数

示例 | 匹配 | 未匹配 | 描述

  • | - | - | - {id}/detail | 1/detail | 1
    1/info | 必需参数,它可以是路径中的任何位置 fruit/{target?} | fruit
    fruit/apple | vegetable | 可选参数,必须是路径的末尾 fruit/{targets*} | fruit
    fruit/apple/banana | vegetable | 可选的vec参数,必须是路径的末尾 fruit/{targets+} | fruit/apple
    fruit/apple/banana | fruit
    vegetable | 必需的vec参数,必须是路径的末尾 fruit/{targets+}.|html | fruit/apple
    fruit/apple.html | fruit/apple.json | 支持非后缀或 ".html" 后缀但不是其他 fruit/{targets+}.html|json | fruit/apple.html
    fruit/apple/banana.json | fruit/apple | 支持 ".html" 或 ".json" 后缀但不是非或其他

  • serializer Vec/struct:
    响应体数据序列化器,用于将 DTO 序列化为 sequences,例如 JsonSerializer{}。如果没有定义,它将是 UnreachableSerializer{}

  • deserializer Vec/struct:
    请求体数据反序列化器,用于将 sequences 反序列化为 DTO,例如 JsonSerializer{}。如果未定义,将是 UnreachableSerializer{}

  • id &str:
    API ID,有时您想使用较短的符号标记一个API,然后可以为此定义一个ID。默认值 ""

  • 省略 bool:
    定义它是一个省略部分,例如 api("home/index", 省略 = true) 表示您必须使用路径 "home" 来访问它,因为 "index" 部分是省略的。默认值 false

  • 重定向 &str:
    定义API应该重定向到另一个API。默认值 ""

  • name &str:
    命名API。如果没有定义,它将是路径的最后部分。

  • 无响应 bool:
    定义API不应响应,有时我们想要请求一个tcp或其他长连接类型的服务,但不需要响应。默认值 false

参数的顺序自上而下,并且您可以使用赋值表达式样式定义它以打破固定顺序。

closed_err!(): proc_macro

一个类似于函数的宏,用于创建 DceErr 枚举。关闭错误表示只打印到控制台,但不向客户端响应特定的错误代码和信息。

参数

  • code isize:
    错误代码,如果未指定,将是 0

  • template &str:
    错误消息或模板。

  • args str-like[]:
    模板参数。

open_err!(): proc_macro

一个类似于函数的宏,用于创建 DceErr 枚举。公开错误表示将特定的错误代码和信息响应给客户端。参数与 closed_err!() 相同。

依赖项

~0.9–1.8MB
~38K SLoC