0.4.0
Several enhancements have been made to HTTPRoute that enable fine grained pattern matching of requests.
Query items can now be matched:
await server.appendRoute("GET /meal?side=fish", to: .file(named: "meal-fish.json"))
await server.appendRoute("GET /meal?side=chips", to: .file(named: "meal-chips.json"))HTTP headers can also be matched:
let json = HTTPRoute("*", headers: [.contentType: "application/json"])
let xml = HTTPRoute("*", headers: [.contentType: "application/xml"])
await server.appendRoute(json, to: .file(named: "sample.json"))
await server.appendRoute(xml, to: .file(named: "sample.xml"))And request body can also be matched:
public protocol HTTPBodyPattern: Sendable {
func evaluate(_ body: Data) -> Bool
}Darwin platforms can pattern match a JSON body with an NSPredicate:
let route = HTTPRoute("POST *", body: .json(where: "food == 'fish'")){"side": "chips", "food": "fish"}