2017-02-14 5 views
3

Я создал проект Vapor. Я зарегистрировал два вида и два API, как показано ниже.Исключить некоторые виды из middleware Vapor

drop.get { req in 
     return try drop.view.make("index.html") 
    } 

    drop.get("home") { req in 
     return try drop.view.make("home.html") 
    } 

    // Register the GET request routes 
    drop.get("appname") { request in 
     return "Welcome to Swift Web service"; 
    } 

    drop.get("appversion") { request in 
     return "v1.0"; 
    } 

Middleware Код:

// Added the Middleware version for request and response 
    final class VersionMiddleware: Middleware { 

     // Interact with request and response 
     func respond(to request: Request, chainingTo next: Responder) throws -> Response { 

      //Middleware is the perfect place to catch errors thrown from anywhere in the application. 
      do { 
       // Exclude the views from middleware 
       if (request.uri.path != "/") { 
        // The request has a 'Version' named token that equals "API \(httpVersion)" 
        guard request.headers["access_token"] == "\(publicAPIKey)" else { 
         throw Abort.custom(
          status: .badRequest, 
          message: "Sorry, Wrong web service authendication!!" 
         ) // The request will be aborted. 
        } 

       } 
       let response = try next.respond(to: request) 
       response.headers["Version"] = "API \(httpVersion)" 
       return response 
      } catch { 
       throw Abort.custom(
        status: .badRequest, 
        message: "Sorry, we were unable to query the Web service." 
       ) 
      } 
     } 
    } 

Добавлено промежуточное конфигурации:

// Configure the middleware 
    drop.addConfigurable(middleware: VersionMiddleware() as Middleware, name: "VersionMiddleware") 

Мои вопросы:

Всякий раз, когда пользователь попытается загрузить home.html он должен подтвердить Middleware cond и если мы загрузим index.html-сервер, будет исключена проверка промежуточного программного обеспечения .

То же, что и в API, Всякий раз, когда пользователь попытается загрузить «/ имя_приложения» должно условия Validate Middleware, и если мы загружаем сервер «AppVersion» будет исключить проверку промежуточного слоя.

Я сделал это используя запрос.uri.path! = "/". Есть ли у нас какой-либо другой способ настроить это в Vapor?

ответ

2

Вы можете group набор маршрутов и назначить промежуточный там

drop.group(VersionMiddleware()) { group in 
    drop.get("home") { req in 
     return try drop.view.make("home.html") 
    } 

    // Register the GET request routes 
    drop.get("appname") { request in 
     return "Welcome to Swift Web service"; 
    } 
} 

drop.get { req in 
    return try drop.view.make("index.html") 
} 

drop.get("appversion") { request in 
    return "v1.0"; 
} 

не называть addConfigurable методы

+0

Это работает отлично !! Спасибо –

+0

@ Виньеш Кумар, вы должны принять этот ответ как правильный. –

 Смежные вопросы

  • Нет связанных вопросов^_^