Vapor GitHub

You're viewing documentation for an older version. View the latest version

JSON#

JSON is an integral part of Vapor. It powers Vapor’s Config and is incredibly easy to use in both requests and responses.

Request#

JSON is automatically available in request.data alongside form-urlencoded data and query data. This allows you to focus on making a great API, not worrying about what content types data will be sent in.

drop.get("hello") { request in
    guard let name = request.data["name"]?.string else {
        throw Abort.badRequest
    }
    return "Hello, \(name)!"
}

This will return a greeting for any HTTP method or content type that the name is sent as, including JSON.

JSON Only#

To specifically target JSON, use the request.json property.

drop.post("json") { request in
    guard let name = request.json?["name"]?.string else {
        throw Abort.badRequest
    }

    return "Hello, \(name)!"
}

The above snippet will only work if the request is sent with JSON data.

Response#

To respond with JSON, simply wrap your data structure with JSON(node: )

drop.get("version") { request in
    return try JSON(node: [
    	"version": "1.0"
    ])
}

Middleware#

The JSONMiddleware is included in the Droplet‘s middleware by default. You can remove it if you don’t want JSON to be parsed.