這篇博客主要實現Swift客戶端和NodeJS後臺的Post、Get請求實現。javascript
我是一個略有點討厭重複使用工具的人,好比這些基本功能徹底能夠用OC和PHP等替代,可是沒辦法,如今知識更新的太快啦,Swift和NodeJS這麼熱,不去看看還會跟不上時代,裏面一些特性也是讓人大開眼界。java
下面就來講說實現吧。node
Swift客戶端:git
Swift中的原生HTTP請求方式有(和OC中同樣)github
1.NSURLConnection的sendSynchronousRequest方法(自iOS9.0起被廢除)express
2. NSURLSession的dataTaskWithRequest方法能夠進行Get或者Post請求json
(另外NSURLSession的downloadTaskWithRequest方法能夠下載文件, uploadTaskWithRequest方法能夠上傳文件等
) swift
這些就不在這篇博客裏寫了,在此主要實現使用第三方Alamofire的方法(相似OC裏的AFNetworking)xcode
Alamofire: https://github.com/Alamofire/Alamofiresession
Swift客戶端提交:
// // ViewController.swift // SwiftUrlSessionDemo // // Created by shen on 15/11/25. // Copyright © 2015年 shen. All rights reserved. // import UIKit import Alamofire class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() testGet() testPost() testUrlSession() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func testGet(){ let para=["getpara1": "getxcode","getpara2":"getnodejs"]; Alamofire.request(.GET, "http://localhost:8002/getdemo",parameters:para) .responseJSON { response in //print(response.request) // original URL request //print(response.response) // URL response //print(response.data) // server data //print(response.result) // result of response serialization if let JSON = response.result.value { print("getJSON: \(JSON)") } } } func testPost(){ let para=["postpara1": "postxcode","postpara2":"postnodejs"]; Alamofire.request(.POST, "http://localhost:8002/postdemo",parameters:para) .responseJSON { response in //print(response.request) // original URL request //print(response.response) // URL response //print(response.data) // server data //print(response.result) // result of response serialization if let JSON = response.result.value { print("postJSON: \(JSON)") } } } //URLSession方法: func testUrlSession(){ let session = NSURLSession.sharedSession() let request = NSURLRequest(URL: NSURL(string: "http://localhost:8002/getdemo?para=session")!) let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in let string = NSString(data: data!, encoding: NSUTF8StringEncoding) print("returnStr:\(string!)") }) task.resume() } }
後臺使用的是NodeJS,使用Express和body-parser框架
Node後臺接收:
var express = require('express'); var bodyParser = require('body-parser'); var app = express(); var server = require('http').createServer(app); app.use(bodyParser.urlencoded({ extended: true })); var PORT = process.env.PORT || 8002; server.listen(PORT); console.log('Server running.'); app.get('/getdemo', function (req, res) { console.log("Get method"); console.log(req.query); var returnDic = {resultStr: 'get request success'}; res.contentType('json');//返回的數據類型 res.send(JSON.stringify(returnDic));//給客戶端返回一個json格式的數據 }); app.post('/postdemo', function (req, res) { console.log("Post method"); console.log(req.body); res.send(req.body); });