2016-07-28 1 views
0

Hé les gars, j'utilise la directive de cache de routage par pulvérisation avec la méthode routeCache pour mettre en cache mes appels api.Cache de routage par pulvérisation ne cache pas 404

Mais le problème est que si vous renvoyez 500 pour une raison quelconque, dans ce cas également, le spray est mis en cache et continue à renvoyer 500 jusqu'à ce que le cache expire.

Alors, comment puis-je mettre en cache seulement 200 réponses OK dans le cache de pulvérisation et pas d'autres.

Répondre

0

suivants ont fonctionné

Au lieu de faire

ctx.complete(ErrorCode, Error) 

a fait

ctx.failWith(Error) 

Ref:

(1) https://github.com/spray/spray/blob/master/spray-caching/src/main/scala/spray/caching/LruCache.scala#L79

Avec failWith la valeur isFailure est définie et si le cache se fait unset

(2) http://spray.io/documentation/1.2.2/spray-routing/route-directives/failWith/

Pour maintenir le code d'état approprié, peut utiliser des gestionnaires d'exception personnalisée comme expliqué dans le lien ci-dessus