Domanda

Usando Restlet dovevo servire alcuni contenuti statici semplici nello stesso contesto del mio servizio web. Ho configurato il componente con una Directory , ma durante i test ho scoperto che servirà solo 'index.html', tutto il resto risulta in un 404.

router.attach("/", new Directory(context, new Reference(baseRef, "./content"));

Quindi ... http: // service e http: //service/index.html entrambi funzionano,

ma http: //service/other.html mi dà un 404

Qualcuno può far luce su questo? Voglio che tutti i file nella directory ./content siano disponibili.

PS: alla fine ho intenzione di utilizzare un proxy inverso e servire tutto il contenuto statico su un altro server Web, ma per ora ho bisogno che funzioni così com'è.

È stato utile?

Soluzione

Bene, ho capito il problema. In realtà Restlet sembra indirizzare le richieste in base al prefisso, ma non gestisce correttamente il prefisso di corrispondenza più lungo, ma ignora anche le estensioni dei file.

Ad esempio, se avessi una risorsa collegata a " / other " ... e una directory su " / " ;. E chiedo /other.html, ciò che accade realmente è che ottengo il " / other " risorsa. (L'estensione viene ignorata?) E non il file statico dalla directory come mi aspetterei.

Se aynone sa perché questo è o come modificarlo, mi piacerebbe saperlo. Non è un grosso problema, solo per i test. Penso che metteremo apache o nginx davanti a questo in produzione comunque.

Altri suggerimenti

I router in Restlet per impostazione predefinita utilizzano il " Template.MODE_STARTS_WITH " modalità di corrispondenza. È sempre possibile impostare il router come predefinito facendo router.setMatchingMode (Template.MODE_EQUALS). Questo attiverà una corrispondenza rigorosa per impostazione predefinita per attach. Puoi scegliere di sovrascrivere i singoli percorsi con setMatchingMode.

Buona documentazione sull'instradamento dei restlet

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top