Definizione dei server - eliguori88/restbrain-server Wiki

HTTP

RestBrain permette di avviare insieme più server http che risponderanno su porte diverse. Ogni server possiederà le sue API e ogni API avrà la sua logica di funzionamento. Per ogni server è possibile specificare

<servers>
   <server>
	<name>Server1</name>
	<listen_port>80</listen_port>
	<bind_address>*</bind_address>
	<connection_timeout>10</connection_timeout>
	<max_connections>0</max_connections>
	<max_connections_per_host>0</max_connections_per_host>
	<on_path_not_found>404</on_path_not_found>
   </server>

   <server>
	<name>Server2</name>
	<listen_port>8080</listen_port>
	<bind_address>*</bind_address>
	<connection_timeout>10</connection_timeout>
	<max_connections>0</max_connections>
	<max_connections_per_host>0</max_connections_per_host>
	<on_path_not_found>404</on_path_not_found>
   </server>
</servers>

Parametro: ip_address

Questo parametro è obbligatorio, permette di specificare su quale ip è in ascolto il server. Il carattere asterisco * specifica che il server ascolti da tutti gli ip del sistema. Inserendo un ip o una lista di ip separati da virgola , il server ascolterà solo da quelli inseriti ingorando le richieste che arrivano su qualsiasi altro ip. Un ipotesi d'uso può essere la seguente:

<servers>
   <server>
	<name>Server localnet</name>
	<listen_port>80</listen_port>
	<bind_address>127.0.0.1,192.168.1.100</bind_address>
	[...]
   </server>

   <server>
	<name>Server public</name>
	<listen_port>80</listen_port>
	<bind_address>192.168.1.101</bind_address>
	[...]
   </server>
</servers>

Parametro: ip_address

Parametro: connection_timeout

Parametro: max_connections

Parametro: max_connections_per_host

Parametro: on_path_not_found

Questo parametro serve a definire il comportamento nel caso in cui venga ricevuta una richiesta per cui non esiste un API. E' possible scegliere tra 3 diversi comportamenti predefiniti:

Valore Comportamento
404 Invia al client il 404
none Ignora la richiesta
default Chiama il path di default

Default path

Nel caso arrivi una richiesta per un API che non esiste(404) è possibile definire un API che venga eseguita per tutte queste richieste. L'API per il default path viene definita usando la stringa /* come path dell'API, di seguito un esempio, per un esempio completo guardare qui:

<servers>
   <server>
	<name>Server localnet</name>
	<listen_port>80</listen_port>
	<bind_address>*</bind_address>
	[...]
        <on_path_not_found>default</on_path_not_found>

        <apis>   
            <api path="/*" method="GET" security_profile="public">
                <logic>
                    <block
                        class='it.gexy.restbrain.server.core.logic.blocks.LBText'>
                        <text>default</text>
                    </block>
                    <block
                        class='it.gexy.restbrain.server.core.logic.blocks.http.LBResponce'>
                    </block>
                </logic>
            </api>
        </apis>
   </server>
</servers>

Parametro: on_bad_request

Non ancora implementato

HTTPS

Non ancora implementato

FTP

Non ancora implementato