- v
查看你的库是否连接成功
Libraries:
postgresql: no (batch mode: no)
mariadb: yes
sqlite3: yes
openssl: yes
brotli: yes
boost: no
c - ares: yes
因为要使用到mysql
控制器
drogon_ctl create controller -h <[ namespace ::]class_name>
drogon_ctl create controller - h demo::v1::User
控制器头文件
TestCtrl.h
#pragma once
#include <drogon/HttpController.h>
using namespace drogon;
namespace web
{
class TestCtrl: public drogon::HttpController<TestCtrl>
{
public :
METHOD_LIST_BEGIN
// METHOD_ADD(TestCtrl::tt,"/tt",Get);
ADD_METHOD_TO(TestCtrl::name, " /name " ,Get);
ADD_METHOD_TO(TestCtrl::tt, " /tt " ,Get);
METHOD_LIST_END
void tt( const HttpRequestPtr& req,std::function< void ( const HttpResponsePtr &)> && callback);
void name( const HttpRequestPtr& req,std::function< void ( const HttpResponsePtr &)> &&callback) const ;
};
}
注意:ADD_METHOD_TO和METHOD_ADD方法的区别
METHOD_ADD是按照空间名称 +文件名称+ 方法名称
http: // 127.0.0.1:888/web/TestCtrl/name
ADD_METHOD_TO
就是直接
http: // 127.0.0.1:888/name
一般传统的mvc我们会分文件夹,比如web,admin,api之类的来区分控制器文件入口,这个就需要去修改CMakeLists.txt
aux_source_directory(controllers CTL_SRC)
aux_source_directory(filters FILTER_SRC)
aux_source_directory(plugins PLUGIN_SRC)
aux_source_directory(models MODEL_SRC)
HttpSimpleController和HttpController注意区分一下
配置数据库,这个有两个配置文件一个是config.json,还有一个models下面的model.json
main.cc
#include <drogon/drogon.h>
int main() {
// Set HTTP listener address and port
// drogon::app().addListener("0.0.0.0",888);
// Load config file
drogon::app().loadConfigFile( " config.json " );
// Run HTTP framework,the method will block in the internal event loop
drogon::app().run();
return 0 ;
}
我编译的是在build / debug测试,注意你的config.json文件相对应的位置
/* This is a JSON format configuration file
*/
{
// ssl:The global ssl files setting
// "ssl": {
// "cert": "trantor/trantor/tests/server.pem",
// "key": "trantor/trantor/tests/server.pem"
// },
" listeners " : [
{
// address: Ip address,0.0.0.0 by default
" address " : " 0.0.0.0 " ,
// port: Port number
" port " : 888 ,
// https: If true, use https for security,false by default
" https " : false
}
// ,
// {
// "address": "0.0.0.0",
// "port": 443,
// "https": true,
// // cert,key: Cert file path and key file path, empty by default,
// // if empty, use the global setting
// "cert": "",
// "key": "",
// // use_old_tls: enable the TLS1.0/1.1, false by default
// "use_old_tls": false
// }
],
" db_clients " : [
{
// name: Name of the client,‘default‘ by default
// "name":"",
// rdbms: Server type, postgresql,mysql or sqlite3, "postgresql" by default
" rdbms " : " mysql " ,
// filename: Sqlite3 db file name
// "filename":"",
// host: Server address,localhost by default
" host " : " 172.18.1.9 " ,
// port: Server port, 5432 by default
" port " : 3306 ,
// dbname: Database name
" dbname " : " v2 " ,
// user: ‘postgres‘ by default
" user " : " zx " ,
// passwd: ‘‘ by default
" passwd " : " zx " ,
// is_fast: false by default, if it is true, the client is faster but user can‘t call
// any synchronous interface of it.
" is_fast " : false ,
// client_encoding: The character set used by the client. it is empty string by default which
// means use the default character set.
// "client_encoding": "",
// connection_number: 1 by default, if the ‘is_fast‘ is true, the number is the number of
// connections per IO thread, otherwise it is the total number of all connections.
" connection_number " : 1
}
],
" app " : {
// threads_num: The number of IO threads, 1 by default, if the value is set to 0, the number of threads
// is the number of CPU cores
" threads_num " : 1 ,
// enable_session: False by default
" enable_session " : false ,
" session_timeout " : 0 ,
// document_root: Root path of HTTP document, defaut path is ./
" document_root " : " ./ " ,
// home_page: Set the HTML file of the home page, the default value is "index.html"
// If there isn‘t any handler registered to the path "/", the home page file in the "document_root" is send to clients as a response
// to the request for "/".
" home_page " : " index.html " ,
// static_file_headers: Headers for static files
/* "static_file_headers": [
{
"name": "field-name",
"value": "field-value"
}
], */
// upload_path: The path to save the uploaded file. "uploads" by default.
// If the path isn‘t prefixed with /, ./ or ,
// it is relative path of document_root path
" upload_path " : " uploads " ,
/* file_types:
* HTTP download file types,The file types supported by drogon
* by default are "html", "js", "css", "xml", "xsl", "txt", "svg",
* "ttf", "otf", "woff2", "woff" , "eot", "png", "jpg", "jpeg",
* "gif", "bmp", "ico", "icns", etc. */
" file_types " : [
" gif " ,
" png " ,
" jpg " ,
" js " ,
" css " ,
" html " ,
" ico " ,
" swf " ,
" xap " ,
" apk " ,
" cur " ,
" xml "
],
// locations: An array of locations of static files for GET requests.
" locations " : [{
// uri_prefix: The URI prefix of the location prefixed with "/", the default value is "" that disables the location.
// "uri_prefix": "/.well-known/acme-challenge/",
// default_content_type: The default content type of the static files without
// an extension. empty string by default.
" default_content_type " : " text/plain " ,
// alias: The location in file system, if it is prefixed with "/", it
// presents an absolute path, otherwise it presents a relative path to
// the document_root path.
// The default value is "" which means use the document root path as the location base path.
" alias " : "" ,
// is_case_sensitive: indicates whether the URI prefix is case sensitive.
" is_case_sensitive " : false ,
// allow_all: true by default. If it is set to false, only static files with a valid extension can be accessed.
" allow_all " : true ,
// is_recursive: true by default. If it is set to false, files in sub directories can‘t be accessed.
" is_recursive " : true ,
// filters: string array, the filters applied to the location.
" filters " : []
}],
// max_connections: maximum connections number,100000 by default
" max_connections " : 100000 ,
// max_connections_per_ip: maximum connections number per clinet,0 by default which means no limit
" max_connections_per_ip " : 0 ,
// Load_dynamic_views: False by default, when set to true, drogon
// compiles and loads dynamically "CSP View Files" in directories defined
// by "dynamic_views_path"
" load_dynamic_views " : false ,
// dynamic_views_path: If the path isn‘t prefixed with /, ./ or ,
// it is relative path of document_root path
" dynamic_views_path " : [
" ./views "
],
// dynamic_views_output_path: Default by an empty string which means the output path of source
// files is the path where the csp files locate. If the path isn‘t prefixed with /, it is relative
// path of the current working directory.
" dynamic_views_output_path " : "" ,
// enable_unicode_escaping_in_json: true by default, enable unicode escaping in json.
" enable_unicode_escaping_in_json " : true ,
// log: Set log output, drogon output logs to stdout by default
" log " : {
// log_path: Log file path,empty by default,in which case,logs are output to the stdout
// "log_path": "./",
// logfile_base_name: Log file base name,empty by default which means drogon names logfile as
// drogon.log ...
" logfile_base_name " : "" ,
// log_size_limit: 100000000 bytes by default,
// When the log file size reaches "log_size_limit", the log file is switched.
" log_size_limit " : 100000000 ,
// log_level: "DEBUG" by default,options:"TRACE","DEBUG","INFO","WARN"
// The TRACE level is only valid when built in DEBUG mode.
" log_level " : " DEBUG "
},
// run_as_daemon: False by default
" run_as_daemon " : false ,
// relaunch_on_error: False by default, if true, the program will be restart by the parent after exiting;
" relaunch_on_error " : false ,
// use_sendfile: True by default, if true, the program
// uses sendfile() system-call to send static files to clients;
" use_sendfile " : true ,
// use_gzip: True by default, use gzip to compress the response body‘s content;
" use_gzip " : true ,
// use_brotli: False by default, use brotli to compress the response body‘s content;
" use_brotli " : false ,
// static_files_cache_time: 5 (seconds) by default, the time in which the static file response is cached,
// 0 means cache forever, the negative value means no cache
" static_files_cache_time " : 5 ,
// simple_controllers_map: Used to configure mapping from path to simple controller
" simple_controllers_map " : [{
" path " : " /path/name " ,
" controller " : " controllerClassName " ,
" http_methods " : [
" get " ,
" post "
],
" filters " : [
]
}],
// idle_connection_timeout: Defaults to 60 seconds, the lifetime
// of the connection without read or write
" idle_connection_timeout " : 60 ,
// server_header_field: Set the ‘Server‘ header field in each response sent by drogon,
// empty string by default with which the ‘Server‘ header field is set to "Server: drogon/version string\r\n"
" server_header_field " : "" ,
// enable_server_header: Set true to force drogon to add a ‘Server‘ header to each HTTP response. The default
// value is true.
" enable_server_header " : true ,
// enable_date_header: Set true to force drogon to add a ‘Date‘ header to each HTTP response. The default
// value is true.
" enable_date_header " : true ,
// keepalive_requests: Set the maximum number of requests that can be served through one keep-alive connection.
// After the maximum number of requests are made, the connection is closed.
// The default value of 0 means no limit.
" keepalive_requests " : 0 ,
// pipelining_requests: Set the maximum number of unhandled requests that can be cached in pipelining buffer.
// After the maximum number of requests are made, the connection is closed.
// The default value of 0 means no limit.
" pipelining_requests " : 0 ,
// gzip_static: If it is set to true, when the client requests a static file, drogon first finds the compressed
// file with the extension ".gz" in the same path and send the compressed file to the client.
// The default value of gzip_static is true.
" gzip_static " : true ,
// br_static: If it is set to true, when the client requests a static file, drogon first finds the compressed
// file with the extension ".br" in the same path and send the compressed file to the client.
// The default value of br_static is true.
" br_static " : true ,
// client_max_body_size: Set the maximum body size of HTTP requests received by drogon. The default value is "1M".
// One can set it to "1024", "1k", "10M", "1G", etc. Setting it to "" means no limit.
" client_max_body_size " : " 1M " ,
// max_memory_body_size: Set the maximum body size in memory of HTTP requests received by drogon. The default value is "64K" bytes.
// If the body size of a HTTP request exceeds this limit, the body is stored to a temporary file for processing.
// Setting it to "" means no limit.
" client_max_memory_body_size " : " 64K " ,
// client_max_websocket_message_size: Set the maximum size of messages sent by WebSocket client. The default value is "128K".
// One can set it to "1024", "1k", "10M", "1G", etc. Setting it to "" means no limit.
" client_max_websocket_message_size " : " 128K "
},
// plugins: Define all plugins running in the application
" plugins " : [{
// name: The class name of the plugin
// "name": "drogon::plugin::SecureSSLRedirector",
// dependencies: Plugins that the plugin depends on. It can be commented out
" dependencies " : [],
// config: The configuration of the plugin. This json object is the parameter to initialize the plugin.
// It can be commented out
" config " : {
" ssl_redirect_exempt " : [ " .*\\.jpg " ],
" secure_ssl_host " : " localhost:8849 "
&
查看更多关于drogon入门教程三 控制器和数据库客户端使用的详细内容...