websUrlHandlerDefine GoAhead WebServer API GoAhead EMF

Synopsis

Define a new URL handler.

Prototype

 #include "webs.h" 

 int websUrlHandlerDefine(char_t *path, int (*fn)(webs_t wp, 
    char_t *url, char_t *path, char_t *query), int flags); 

Parameters

wp Web server connection handle.
url Request URL.
path Request path portion of the URL.
query Query string portion of the URL.
flags Specify a sorting value to modify the calling order of the handler.

Description

The websUrlHandlerDefine procedure adds a new URL handler by associating a URL path segment with a processing function. URL handlers are called in sorted order beginning with the handlers with longer path segments. For example, the handler for "/myUrl" would be called before the handler for "/my".

The flags parameter can specify two special sorting values:

  • WEBS_HANDLER_FIRST
  • WEBS_HANDLER_LAST

If specified, the flags modify the calling order of the handler. Multiple handlers may specify these flags, in which case the order of all the handlers specifying WEBS_HANDLER_FIRST is undefined. This is the same for multiple handlers using WEBS_HANDLER_LAST.

A URL handler is a C procedure according to the following prototype:

 int myHandler(webs_t wp, char_t *url, char_t *path, char_t *query); 

The url parameter contains the entire URL. The path parameter holds the URL portion after the hostname and port number. The query parameter holds any optional query.

The URL handler must return 1 if it elects to process the URL. Otherwise, it should return 0 to indicate that a later URL handler should process the URL. A handler may modify the URL request using any of the websSetRequest APIs. In this case, if it returns 0, a subsequent URL handler will process the modified request.

Return Value

Returns 0 if successful, otherwise it returns -1.

Example

 int myHandler(webs_t 
     wp, char_t *url, char_t *path, char_t *query)
     { /* * Processing here */ return 1; } 
     websUrlHandlerDefine("", myHandler, 
     WEBS_HANDLER_FIRST); websUrlHandlerDefine
     ("/mypath", myOtherHandler, 0); 

Stability Classification

Stable.

See Also

websSecurityHandler