2015-10-11 2 views
2

Я разрабатываю приложение SparkJava (не Apache Spark), и я хотел бы поделиться объектом между фильтром before и post route. Фильтр и маршрут определяются в разных классах. Я не хочу заниматься сессиями, потому что это мобильное приложение json api, и теоретически это должно быть бесплатно. Область переменных должна начинаться с начала обработки запроса до конца.SparkJava Variables Scope

before(Main.API_PROTECTED + "/*", (req, res) -> { 
     String token = req.headers("Authorization"); 
     if (token == null | "".equals(token)) { 
      halt(401, "You're not welcome."); 
     } else { 
      Partner partner = new PartnerDAO().getPartnerByToken(token.replace("Bearer ", "")); 
      if (partner == null) { 
       halt(401, "You're not welcome."); 
      } 
     } 
    }); 

Там в выше перед фильтром, из которого я хотел бы поделиться объектом партнера с почтовым маршрутом ниже:

 post(Main.API_PROTECTED + "/vendors", 
      (req, res) -> { 
       // Do stuff to insert Vendors in the Database, verifying access control using the partner object 
       return ""; 
      }); 

Может быть, в будущем, приложению нужно будет масштабировать, так имейте в виду, что это может быть несколько узлов.

ответ

2

Добавьте объект к запросу в фильтр.

request.attribute("myObject", "my value"); 

Посмотрите его в пост

request.attribute("myObject"); // "my value"