add layer and test
refactor the test
use can add path and middleware
let tests pass by calling layer.handle
implement request path matcher