gpt4 book ai didi

c++ - 在端点中将oatpp::Enum用作路径参数类型的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-02 10:10:23 25 4
gpt4 key购买 nike

我正在使用Oat ++框架(https://oatpp.io/)构建REST API。
我想管理用户角色,并且希望有一个端点来更新用户记录的单个字段-用户角色。为此,我创建了一个端点:

ENDPOINT("PUT", "/users/{userId}/role/{role}", updateUserRole,
PATH(oatpp::String, userId),
PATH(oatpp::String, role))
{
// TODO - Set user role here.
return createResponse(Status::CODE_200, "OK");
}
现在,我要验证用户角色是否具有正确的值。具体来说,其值属于允许值的集合。
我可以用预定义的值创建某种静态集,并检查它是否包含接收到的值,但是我想知道是否有更好的方法来实现。
我发现Oatpp有一些 oatpp::Enum类型
但是我找不到在端点中使用枚举作为路径参数的任何示例。
因此,可以使用oatpp::Enum作为路径参数吗?如果是,那么正确的使用方式是什么?
提前致谢!

最佳答案

在DTO代码生成部分中声明Enum:

ENUM(UserRoles, v_int32,
VALUE(ADMIN, 1, "admin"), //<- you may use qualifiers here
VALUE(GUEST, 2),
VALUE(USER, 3)
)
声明一个端点:
ENDPOINT("PUT", "/users/{userId}/role/{role}", updateUserRole,
PATH(oatpp::String, userId),
PATH(oatpp::Enum<UserRoles>, role))
{
// TODO - Set user role here.
return createResponse(Status::CODE_200, "OK");
}
oatpp::Enum将为您进行所有验证。
有效要求:
$ curl -X PUT http://localhost:8000/users/user-1/role/GUEST
OK
无效的请求:
$ curl -X PUT http://localhost:8000/users/user-1/role/SOMETHING
server=oatpp/1.1.0
code=400
description=Bad Request
message=Invalid PATH parameter 'role'. Expected type is 'oatpp::Enum<UserRoles>'
如果要接收整数值,也可以使用 oatpp::Enum<UserRoles>::AsNumber

关于c++ - 在端点中将oatpp::Enum用作路径参数类型的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63848447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com