JSON在 Vapor
里是不可或缺的,包括Vapor的配置都是采用json
的格式,数据请求和数据应答中json
也是更加简便的数据交互方式。
Request
JSON总是会和form-urlencoded data
和query data
绑定在一起,并且在 request.data
中自动获取,也就是你可以专注于API的开发,而不必担心content types
的设置。
drop.get("hello") { request in
guard let name = request.data["name"]?.string else {
throw Abort.badRequest
}
return "Hello, \(name)!"
}
不管是以什么HTTP method
或content type
发送的name
,最后都会返回成功。
JSON Only
如果只接收JSON数据,可以使用request.json
。
drop.post("json") { request in
guard let name = request.json?["name"]?.string else {
throw Abort.badRequest
}
return "Hello, \(name)!"
}
只有post
的数据是json
的格式,这个请求才会成功。
Response
对于respond
的json
数据,可以使用JSON(node: )
进行格式化。
drop.get("version") { request in
return try JSON(node: [
"version": "1.0"
])
}
Middleware(数据交换格式)
JSONMiddleware
是Droplet
默认的middleware
. 如果你不想用JSON语法解析,你可以删除。