Question

À l’aide de Restlet, je devais diffuser un contenu statique simple dans le même contexte que mon service Web. J'ai configuré le composant avec un répertoire , mais lors des tests, il ne servira que "index.html", tout le reste donne un 404.

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

Donc ... http: // service et http: //service/index.html les deux fonctionnent,

mais http: //service/other.html me donne un 404

Quelqu'un peut-il nous éclairer? Je souhaite que tous les fichiers du répertoire ./content soient disponibles.

PS: Je prévois éventuellement d’utiliser un proxy inverse et de diffuser tout le contenu statique sur un autre serveur Web, mais pour le moment, j’ai besoin que cela fonctionne tel quel.

Était-ce utile?

La solution

Eh bien, j'ai compris le problème. En fait, Restlet semble acheminer les demandes en fonction du préfixe, mais ne gère pas correctement le préfixe correspondant le plus long. Il semble également ignorer les extensions de fichier.

Ainsi, par exemple, si une ressource était associée à "/ autre" ... et un répertoire sur "/". Et je demande /other.html, ce qui se passe réellement, c’est que j’obtiens le "/ autre" Ressource. (L’extension est ignorée?) Et non le fichier statique du répertoire comme je l’attendais.

Si Aynone sait pourquoi, ou aimerait le changer, j'aimerais savoir. Ce n'est pas un gros problème, juste pour les tests. Je pense que nous allons quand même mettre Apache ou Nginx devant la production.

Autres conseils

Les routeurs de Restlet utilisent par défaut le " Template.MODE_STARTS_WITH & "; mode correspondant. Vous pouvez toujours définir les paramètres par défaut du routeur en effectuant router.setMatchingMode (Template.MODE_EQUALS). Cela activera la correspondance stricte par défaut pour l'attachement. Vous pouvez choisir de remplacer des itinéraires individuels avec setMatchingMode.

Bonne documentation sur le routage Restlet

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top