oatpp的初步探索
一些基本概念
CORS(跨域资源共享):浏览器的安全特性,允许你控制哪些外部域名访问你的API
API路由:简单来说就是根据客户端发起的请求(包括请求的方法,如GET、POST、PUT等,以及请求的URL路径)将请求映射到不同的处理逻辑中:
1.匹配客户端发来的请求
2.根据请求的路径和方法,找到并执行相应的代码(处理逻辑)
3.返回一个响应给客户端
代码解析
1 | #Declare Endpoint |
本段代码的作用是声明一个HTTP请求的API路由:
put
: 说明这是一个HTTP PUT请求, 用于更新资源/users/{userId}
: 定义了API的路径,其中{userId}表示特定的用户,用来定位特定用户putUser
: 处理该请求的函数或者方法PATH(Int64, userId)
: ;将路径中提取的参数userId绑定到Int64类型的userId变量中BODY_DTO(Object<UserDto>, userDto)
: 请求体中的数据会被反序列化为一个UserDto对象,并包装在Object类型中。可以通过userDto访问请求体中的数据并进行处理,Object 是oatpp框架中的一个智能指针类型
我们可以从这里得到ENDPOINT宏的参数说明和用法
1 | ENDPOINT("<http-method>", "<path>", <method-name>, <optional param-mappings>) |
当然你也可以直接在源码中找到ENDPOINT的定义:
1 | * Codegen macro to be used in `oatpp::web::server::api::ApiController` to generate Endpoint. |
这个宏定义一个HTTP endpoint,在ApiController
中处理不同的HTTP方法,根据提供的HTTP方法和路径,利用多重宏选择机制和宏展开来生成适合的代码