Swift&NodeJS 使用Alamofire進行Post(zhuan)

這篇博客主要實現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); 
});
相關文章
相關標籤/搜索