Quick Nav
- EspApp
- EspCompile
- EspDb
- EspDir
- EspEnv
- EspKeepSource
- EspLink
- EspLoad
- EspResource
- EspResourceGroup
- EspRoute
- EspRouteSet
- EspShowErrors
- EspUpdate
See Also
ESP Directives
The ESP directives control the ESP Web Framework and configure and control ESP web applications.
EspApp
| Description | Define an ESP web application |
|---|---|
| Synopsis | EspApp UriPrefix [Directory [RouteSet [Database]]] |
| Context | Default server, Virtual host, Route |
| Example | EspApp /myapp/ /var/www/myapp restful mdb://myapp.mdb |
| Notes |
The EspApp directive defines an ESP application at the given directory that will receive all requests that begin with specified URI prefix. It defines a new Route block, inheriting the existing configuration and then tailors it for the ESP application. This one-line directive is typically all you need to do to define an ESP application. It is loosely equivalent to the following directive sequence:
<Route UriPrefix>
Prefix UriPrefix
DocumentRoot Directory
AddHandler espHandler
EspDir RouteSet
EspRouteSet RouteSet
EspDb Database
</Route>
The EspApp directive will create a route for the given URI prefix and will create sub-routes if required by the RouteSet argument. The UriPrefix argument is mandatory, all others are optional. The Directory argument is used to define the DocumentRoot for the defined route. The RouteSet argument specifies a set of routes to add for the applications. Permissable values for the RouteSet are:
It is convenient to define applications using this directive in a separate configuration file for each application. If the application config file is stored under the Appweb "conf/apps" directory, then Appweb will read it automatically when it starts. This makes it very easy to install or remove applications by simply adding or removing an application configuration file to or from this directory. The EspApp directive does the following actions:
Note: use a trailing "/" on the prefix to prevent matching URIs that have the prefix as part of the first (non-directory) portion of their URI. . |
EspCompile
| Description | Define the command to compile ESP controllers and template pages |
|---|---|
| Synopsis | EspCompile commandline |
| Context | Default server, Virtual host, Route |
| Example |
EspCompile cc -shared ${DEBUG} -Wall -Wno-unused-result \
-DPIC -fPIC -I${INC} -L${LIB} -Wl,--enable-new-dtags \
-Wl,-rpath,$ORIGIN/ -Wl,-rpath,$ORIGIN/../lib ${LIBS} \
-o ${OUT}${SHOBJ} ${SRC} |
| Notes |
The EspCompile directive specifies the command line to use to compile controllers and parsed ESP template pages. The command can used embedded tokens of the form ${TOKEN}. These are expanded at run-time based on the platform. The set of supported tokens is:
A default EspCompile directive is supplied via the /usr/lib/appweb/lib/esp.conf configuration file. On windows this is installed by default at: /Program Files/Embedthis Appweb/lib/esp.conf. This file defines standard compilation and link commands for Windows, Linux, MacOSX and VXWORKS. To override the default EspCompile command line, ensure you place an EspCompile directive after the include for esp.conf. |
EspDb
| Description | Define the database to use for an ESP applications |
|---|---|
| Synopsis | EspDb database-spec |
| Context | Default server, Virtual host, Route |
| Example |
EspDb mdb://test.mdb EspDb sdb://test.sdb |
| Notes |
The EspDb directive specifies the default database to use by an ESP application. The database is opened when Appweb starts and is made available to all ESP requests using the current Route. The database spec argument is of the form: provider://path Where provider is the database provider name. ESP currently supports two providers:
The database path can be a relative or absolute path. If relative, it will be relative to the ESP db directory. See espDir for how to define the db directory. |
EspDb
| Description | Define the directories to use for an ESP applications |
|---|---|
| Synopsis | EspDir mvc EspDir [cache|controllers|db|layouts|static|views] Directory |
| Context | Default server, Virtual host, Route |
| Example |
EspDir mvc EspDir static ./web |
| Notes |
The EspDir directive configures the directories used by ESP. The standard directories are:
There are two forms for the EspDir directive. The first takes a single argument set to "mvc". This form sets each of the standard directories to their default values. The second form defines a single ESP directory to the given path value. |
EspEnv
| Description | Define an environment variable to set before invoking the compile or link command lines. |
|---|---|
| Synopsis | EspEnv String |
| Context | Default server, Virtual host, Route |
| Example |
EspEnv LIB "${WINSDK}\LIB;${VS}\VC\lib"
|
| Notes |
The EspEnv directive defines an environment variable that will be defined before running the EspCompile or EspLink commands. Some platforms, such as Windows with Visual Studio, require certain environment variables to be defined for the compiler and linker to execute. Visual Studio requires that the INCLUDE, LIB, PATH and TMP environment variables be defined correctly. |
EspKeepSource
| Description | Control whether to preserve intermediate source for template pages and views |
|---|---|
| Synopsis | EspKeepSource on|off |
| Context | Default server, Virtual host, Route |
| Example |
EspKeepSource on |
| Notes |
The EspKeepSource directive controls whether the parsed, intermediate "C" source code for ESP templates and views should be preserved in the cache directory. This is useful when debugging the view in an IDE or debugger. Set the argument to "on" to preserve intermediate source and set to "off" to remove intermediate source. |
EspLink
| Description | Define the command to link ESP controllers and template pages |
|---|---|
| Synopsis | EspLink commandline |
| Context | Default server, Virtual host, Route |
| Example |
EspLink cc -dynamiclib ${DEBUG} -arch ${ARCH} -L${LIB} \
-Wl,-rpath,@executable_path/../lib \
-Wl,-rpath,@executable_path/ -Wl,-rpath,@loader_path/ \
${LIBS} -o ${OUT}${SHOBJ} ${OBJ} |
| Notes |
The EspLink directive specifies the command line to use to link controllers and parsed ESP template pages. The command can used embedded tokens of the form ${TOKEN}. These are expanded at run-time based on the platform. The set of supported tokens is:
A default EspLink directive is supplied via the /usr/lib/appweb/lib/esp.conf configuration file. On windows this is installed by default at: /Program Files/Embedthis Appweb/lib/esp.conf. This file defines standard compilation and link commands for Windows, Linux, MacOSX and VXWORKS. To override the default EspLink command line, ensure you place an EspLink directive after the include for esp.conf. Some platforms can do the compile and link phases in one command. Others require a separate link. |
EspLoad
| Description | Load an ESP application that has been compiled flat using the esp command. |
|---|---|
| Synopsis | EspLoad Name Path |
| Context | Default server, Virtual host, Route |
| Example |
EspLoad blog cache/app EspLoad blog cache/app.dylib |
| Notes |
The EspLoad directive will pre-load an ESP application that has been compiled flat via the esp compile flat command. A flat application is one where all controllers, views and ESP template pages have been compiled into a single module. Pre-loading a flat application provides the ultimate in performance and eliminates any per-request overhead in checking for changed modules or source code. The Name argument to the directive should be a unique, descriptive name for the application. The second argument is a path to the compiled, flat application. This by default is called cache/app.so where .so may vary depending on the O/S platform. The path may be specified with or without an extension. Omitting the extension will allow a common configuration file to be used across multiple platforms. See the ESP Generator documentation for more details. |
EspResource
| Description | Create a set of routes for a singleton resource |
|---|---|
| Synopsis | EspResource name [, name] ... |
| Context | Default server, Virtual host, Route |
| Example |
EspResource system profile status |
| Notes |
The EspResource directive creates a set of routes suitable for a singleton resource. The routes created are RESTful routes that are designed to mesh well with ESP MVC applications. They provide clean URIs that allow the basic Create/Read/Update/Destroy (CRUD) operations on a resource. For example, this command will generate the following routes:EspResource system
LogRoutes
# Prints ...
Name Method Pattern Target
/system/init GET ^/system/init$ system-init
/system/create POST ^/system(/)*$ system-create
/system/edit GET ^/system/edit$ system-edit
/system/show GET ^/system$ system-show
/system/update PUT ^/system$ system-update
/system/destroy DELETE ^/system$ system-destroy
/system/default * ^/system/{action}$ system-cmd-$1
|
EspResourceGroup
| Description | Create a set of routes for a group of resources |
|---|---|
| Synopsis | EspResourceGroup name [, name] ... |
| Context | Default server, Virtual host, Route |
| Example |
EspResourceGroup customer prospect |
| Notes |
The EspResourceGroup directive creates a set of routes suitable for a group of resources. The routes created are RESTful routes that are designed to mesh well with ESP MVC applications. They provide clean URIs that allow the basic Create/Read/Update/Destroy (CRUD) operations on a group of resources. Use this directive if there are more than one instance of a resource. Use the EspResource directive if there is only once instance of the resource. By convention, the resource group name should be singular and not plural. To avoid confusion as to whether controller and/or view names should be singular or plural — ESP always uses singular names for controllers, views, template pages and database tables. For example, this command will generate the following routes: EspResourceGroup user
LogRoutes
# Prints ...
Name Method Pattern Target
/user/list GET ^/user(/)*$ user-list
/user/init GET ^/user/init$ user-init
/user/create POST ^/user(/)*$ user-create
/user/edit GET ^/user/{id=[0-9]+}/edit$ user-edit
/user/show GET ^/user/{id=[0-9]+}$ user-show
/user/update PUT ^/user/{id=[0-9]+}$ user-update
/user/destroy DELETE ^/user/{id=[0-9]+}$ user-destroy
/user/custom POST ^/user/{action}/{id=[0-9]+}$ user-$1
/user/default * ^/user/{action}$ user-cmd-$1
|
EspRoute
| Description | Define and configure a route for use by ESP |
|---|---|
| Synopsis | EspRoute Name Methods Pattern Target Source |
| Context | Default server, Virtual host, Route |
| Example |
EspRoute /app/user POST ^/app/user/{action} user-${action} user.c
|
| Notes |
The EspRoute directive creates a single route and configures it according to the given parameters. This is a one-line convenience directive that is equivalent to the following directive sequence: For ESP MVC applications, the target must be of the form: CONTROLLER-ACTION. The target string can contain token replacement references of the form "${token}". This will typically use "${action}" and/or "${controller}". <Route ^/app/user/{action}> Name /app/user Methods POST Source user.c Target run </Route> |
EspRouteSet
| Description | Define a set of routes |
|---|---|
| Synopsis | EspRouteSet simple|mvc|restful |
| Context | Default server, Virtual host, Route |
| Example |
EspRouteSet mvc |
| Notes |
The EspRouteSet directive defines a pre-prepared set of routes according to the route set argument. Valid sets are:
|
EspShowErrors
| Description | Control whether to display ESP server-side errors to the client. |
|---|---|
| Synopsis | EspShowErrors on|off |
| Context | Default server, Virtual host, Route |
| Example |
EspShowErrors on |
| Notes |
The EspShowErrors directive controls whether ESP errors are sent to the client and displayed in the browser. If EspShowErrors is off, then ESP errors will be sent to the Appweb log file. If EspShowErrors is on, then the errors will also be sent back to the client. This is useful in development mode to quickly diagnose errors. |
EspUpdate
| Description | Control whether to reload updated modules and compile controllers and template pages |
|---|---|
| Synopsis | EspUpdate on|off |
| Context | Default server, Virtual host, Route |
| Example |
EspUpdate on |
| Notes |
The EspUpdate directive controls whether to reload updated content. If EspUpdate is on, then ESP will reload any updated module. It will also recompile updated controller source files, web pages and views. When reloading, ESP first waits for all active ESP requests to complete before unloading old versions of the module being updated. When all is quiet, it reloads the new module — recompiling if required. |