Mercurial > urweb
comparison doc/manual.tex @ 1604:b1af16cdc659
More complete account of URI determination in structure section
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 20 Nov 2011 19:22:57 -0500 |
parents | e44be6ece475 |
children | 77180224f1f9 |
comparison
equal
deleted
inserted
replaced
1603:06958d5a7088 | 1604:b1af16cdc659 |
---|---|
105 Change the path in the first line if you chose a different Emacs installation path during configuration. | 105 Change the path in the first line if you chose a different Emacs installation path during configuration. |
106 | 106 |
107 | 107 |
108 \section{Command-Line Compiler} | 108 \section{Command-Line Compiler} |
109 | 109 |
110 \subsection{Project Files} | 110 \subsection{\label{cl}Project Files} |
111 | 111 |
112 The basic inputs to the \texttt{urweb} compiler are project files, which have the extension \texttt{.urp}. Here is a sample \texttt{.urp} file. | 112 The basic inputs to the \texttt{urweb} compiler are project files, which have the extension \texttt{.urp}. Here is a sample \texttt{.urp} file. |
113 | 113 |
114 \begin{verbatim} | 114 \begin{verbatim} |
115 database dbname=test | 115 database dbname=test |
2202 \end{array}$$ | 2202 \end{array}$$ |
2203 | 2203 |
2204 | 2204 |
2205 \section{\label{structure}The Structure of Web Applications} | 2205 \section{\label{structure}The Structure of Web Applications} |
2206 | 2206 |
2207 A web application is built from a series of modules, with one module, the last one appearing in the \texttt{.urp} file, designated as the main module. The signature of the main module determines the URL entry points to the application. Such an entry point should have type $\mt{t1} \to \ldots \to \mt{tn} \to \mt{transaction} \; \mt{page}$, for any integer $n \geq 0$, where $\mt{page}$ is a type synonym for top-level HTML pages, defined in $\mt{Basis}$. If such a function is at the top level of main module $M$, with $n = 0$, it will be accessible at URI \texttt{/M/f}, and so on for more deeply-nested functions, as described in Section \ref{tag} below. Arguments to an entry-point function are deserialized from the part of the URI following \texttt{f}. | 2207 A web application is built from a series of modules, with one module, the last one appearing in the \texttt{.urp} file, designated as the main module. The signature of the main module determines the URL entry points to the application. Such an entry point should have type $\mt{t1} \to \ldots \to \mt{tn} \to \mt{transaction} \; \mt{page}$, for any integer $n \geq 0$, where $\mt{page}$ is a type synonym for top-level HTML pages, defined in $\mt{Basis}$. If such a function is at the top level of main module $M$, with $n = 0$, it will be accessible at URI \texttt{/M/f}, and so on for more deeply-nested functions, as described in Section \ref{tag} below. See Section \ref{cl} for information on the \texttt{prefix} and \texttt{rewrite url} directives, which can be used to rewrite the default URIs of different entry point functions. The final URL of a function is its default module-based URI, with \texttt{rewrite url} rules applied, and with the \texttt{prefix} prepended. Arguments to an entry-point function are deserialized from the part of the URI following \texttt{f}. |
2208 | 2208 |
2209 Elements of modules beside the main module, including page handlers, will only be included in the final application if they are transitive dependencies of the handlers in the main module. | 2209 Elements of modules beside the main module, including page handlers, will only be included in the final application if they are transitive dependencies of the handlers in the main module. |
2210 | 2210 |
2211 Normal links are accessible via HTTP \texttt{GET}, which the relevant standard says should never cause side effects. To export a page which may cause side effects, accessible only via HTTP \texttt{POST}, include one argument of the page handler of type $\mt{Basis.postBody}$. When the handler is called, this argument will receive a value that can be deconstructed into a MIME type (with $\mt{Basis.postType}$) and payload (with $\mt{Basis.postData}$). This kind of handler will only work with \texttt{POST} payloads of MIME types besides those associated with HTML forms; for these, use Ur/Web's built-in support, as described below. | 2211 Normal links are accessible via HTTP \texttt{GET}, which the relevant standard says should never cause side effects. To export a page which may cause side effects, accessible only via HTTP \texttt{POST}, include one argument of the page handler of type $\mt{Basis.postBody}$. When the handler is called, this argument will receive a value that can be deconstructed into a MIME type (with $\mt{Basis.postType}$) and payload (with $\mt{Basis.postData}$). This kind of handler will only work with \texttt{POST} payloads of MIME types besides those associated with HTML forms; for these, use Ur/Web's built-in support, as described below. |
2212 | 2212 |