4.4. RESTful应用开发参考

4.4.1. 工具宏

4.4.1.1. HTTP方法宏

用于在RESTful控制器配置中配置。

宏定义#define HTTP_METHOD_GET"GET"
宏定义#define HTTP_METHOD_POST"POST"
宏定义#define HTTP_METHOD_HEAD"HEAD"
宏定义#define HTTP_METHOD_TRACE"TRACE"
宏定义#define HTTP_METHOD_OPTIONS"OPTIONS"
宏定义#define HTTP_METHOD_PUT"PUT"
宏定义#define HTTP_METHOD_DELETE"DELETE"

4.4.2. 函数原型

4.4.2.1. RESTful应用动态库函数原型

4.4.2.1.1. funcRestServiceEntry
函数原型typedef int funcRestServiceEntry( struct RestServiceContext ctx );
函数说明当RESTful控制器分拣时调用
输入参数struct RestServiceContext ctx : RESTful环境上下文环境
输出参数(无)
返回值0 : 构造成功非0 : 失败,具体失败原因见错误宏

4.4.3. API函数

4.4.3.1. RESTful服务控制器类

4.4.3.1.1. RESTCreateRestServiceControler
函数原型struct RestServiceControler RESTCreateRestServiceControler( struct RestServiceConfig config_array ); );
函数说明用代码中配置的RESTful路由表,构造RESTful服务控制器
输入参数struct RestServiceConfig config_array : 在代码中配置的RESTful路由表;http_method是HTTP请求头方法,http_uri_paths_match是HTTP请求头URI,目录文件名可用"{}"通配,如"/books/{}",pfuncRestServiceEntry是RESTful服务入口函数
输出参数(无)
返回值struct RestServiceControler : RESTful服务控制器
4.4.3.1.2. RESTDispatchRestServiceControler
函数原型int RESTDispatchRestServiceControler( struct RestServiceControler ctl , struct HttpEnv http );
函数说明用当前HTTP请求,查询RESTful服务控制器,分派调用RESTful服务入口函数
输入参数struct RestServiceControler ctl : RESTful服务控制器struct HttpEnv http : HTTP结构,内有当前HTTP请求,调用socgi层函数SOCGIGetHttpEnv取出
输出参数(无)
返回值0 : 分派成功非0 : 失败,具体失败原因见错误宏
4.4.3.1.3. RESTDestroyRestServiceControler
函数原型void RESTDestroyRestServiceControler( struct RestServiceControler ctl );
函数说明销毁RESTful服务控制器
输入参数struct RestServiceControler ctl : RESTful服务控制器
输出参数(无)
返回值(无)

4.4.3.2. 查询RESTful请求信息类

4.4.3.2.1. RESTGetHttpMethodPtr
函数原型char RESTGetHttpMethodPtr( struct RestServiceContext ctx , int p_http_method_len );
函数说明从RESTful环境中得到当前HTTP请求的方法
输入参数struct RestServiceContext ctx : RESTful环境上下文环境
输出参数int p_method_len : 如果传入,返回时赋值为HTTP请求方法的长度
返回值char : HTTP请求方法;没有C字符串结束符,须按长度访问
4.4.3.2.2. RESTGetHttpUriPtr
函数原型char RESTGetHttpUriPtr( struct RestServiceContext ctx , int p_http_uri_len );
函数说明从RESTful环境中得到当前HTTP请求的方法
输入参数struct RestServiceContext ctx : RESTful环境上下文环境
输出参数int p_method_len : 如果传入,返回时赋值为HTTP请求方法的长度
返回值char : HTTP请求方法;没有C字符串结束符,须按长度访问
4.4.3.2.3. RESTGetHttpUriPathsCount
函数原型int RESTGetHttpUriPathsCount( struct RestServiceContext ctx );
函数说明从RESTful环境中得到当前HTTP请求URI的分解出来的目录文件数量
输入参数struct RestServiceContext ctx : RESTful环境上下文环境
输出参数(无)
返回值int : 分解出来的目录文件数量
4.4.3.2.4. RESTGetHttpUriPathPtr
函数原型char RESTGetHttpUriPathPtr( struct RestServiceContext ctx , int index , int p_path_len );
函数说明从RESTful环境中得到当前HTTP请求URI的分解出来的某段目录文件名
输入参数struct RestServiceContext ctx : RESTful环境上下文环境< br />int index : 分解出来的目录文件名段序号;从1开始int p_path_len : 目录文件名长度
输出参数(无)
返回值char : 分解出来的某段目录文件名;没有C字符串结束符,须按长度访问
4.4.3.2.5. RESTGetHttpUriQueriesCount
函数原型int RESTGetHttpUriQueriesCount( struct RestServiceContext ctx );
函数说明从RESTful环境中得到当前HTTP请求URI的分解出来的参数数量
输入参数struct RestServiceContext ctx : RESTful环境上下文环境
输出参数(无)
返回值int : 分解出来的参数数量
4.4.3.2.6. RESTGetHttpUriQueryKeyPtr
函数原型char RESTGetHttpUriQueryKeyPtr( struct RestServiceContext ctx , int index , int p_key_len );
函数说明从RESTful环境中得到当前HTTP请求URI的分解出来的某段参数名
输入参数struct RestServiceContext ctx : RESTful环境上下文环境< br />int index : 分解出来的参数段序号;从1开始int p_key_len : 参数名长度
输出参数(无)
返回值char : 分解出来的某段参数名;没有C字符串结束符,须按长度访问
4.4.3.2.7. RESTGetHttpUriQueryValuePtr
函数原型char RESTGetHttpUriQueryValuePtr( struct RestServiceContext ctx , int index , int p_value_len );
函数说明从RESTful环境中得到当前HTTP请求URI的分解出来的某段参数值
输入参数struct RestServiceContext ctx : RESTful环境上下文环境< br />int index : 分解出来的参数段序号;从1开始int p_key_len : 参数值长度
输出参数(无)
返回值char : 分解出来的某段参数值;没有C字符串结束符,须按长度访问
4.4.3.2.8. RESTGetHttpRequestBodyPtr
函数原型char RESTGetHttpRequestBodyPtr( struct RestServiceContext ctx , int p_body_len );
函数说明从RESTful环境中得到当前HTTP请求体
输入参数struct RestServiceContext ctx : RESTful环境上下文环境< br />int p_body_len : HTTP请求体长度
输出参数(无)
返回值char : HTTP请求体;没有C字符串结束符,须按长度访问

4.4.3.3. 构造RESTful响应信息类

4.4.3.3.1. RESTFormatHttpResponse
函数原型int RESTFormatHttpResponse( struct RestServiceContext ctx , char http_response_body , int http_response_body_len , char http_header_format , … );
函数说明构造HTTP响应
输入参数struct RestServiceContext ctx : RESTful环境上下文环境char http_response_body : HTTP响应体int http_response_body_len : HTTP响应体长度char http_header_format , … : HTTP响应头;如果有多行的话,要用"\r\n"分隔
输出参数(无)
返回值0 : 构造成功非0 : 失败,具体失败原因见错误宏

4.4.3.4. 其它类

4.4.3.4.1. RESTGetHttpEnv
函数原型struct HttpEnv RESTGetHttpEnv( struct RestServiceContext ctx );
函数说明从RESTful环境上下文环境中得到HTTP结构,后续可以使用fasterhttp库操作该结构,编译时包含其头文件,链接时包含其库文件
输入参数struct RestServiceContext *ctx : HTTP环境上下文环境
输出参数(无)
返回值HTTP环境