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語法解析,你可以刪除。