一個(gè)可視化的服務(wù)端開發(fā)環(huán)境

在了解如何處理Alamofire發(fā)送到服務(wù)端的各種請求之前墓塌,我們通過這段視頻向大家介紹如何基于Laravel和PHPStorm搭建一個(gè)便捷的服務(wù)端開發(fā)環(huán)境僵朗,它可以幫助我們更方便的觀察Alamofire發(fā)來的各種請求。


下載Laravel

為了方便測試闻镶,我們新建一個(gè)Laravel項(xiàng)目來處理Alamofire發(fā)來的各種HTTP請求:


composer create-project --prefer-dist laravel/laravel apidemo

創(chuàng)建完成之后,我們把新項(xiàng)目添加到Homestead。

配置Homestead

打開~/.homestead/Homestead.yaml弧械,在配置文件的對應(yīng)部分,添加下面的內(nèi)容:


folders:
    - map: /Users/puretears/projects/apidemo
      to: /var/www/apidemo/current

sites:
    - map: apidemo.boxue.io
      to: /var/www/apidemo/current/public

databases:
    - apidemo

保存并退出之后空民,執(zhí)行下面的命令把新增的Web應(yīng)用添加到vagrant:


vagrant up
vagrant provision

完成之后刃唐,添加一條新的/etc/hosts紀(jì)錄:


apidemo.boxue.io 192.168.10.10 # Change your local IP here

然后在瀏覽器里訪問apidemo.boxue.io,能顯示默認(rèn)Laravel 5的頁面界轩,就表示基本的環(huán)境已經(jīng)完成了画饥。接下來,我們訪問https://apidemo.boxue.io浊猾,就會看到一個(gè)安全提示抖甘。這是由于Homestead里配置的證書不是有一個(gè)可信的CA簽發(fā)的造成的。由于iOS 9以后葫慎,所有的HTTP通信強(qiáng)制要求要基于HTTPS衔彻,因此我們需要給apidemo申請一個(gè)由可信CA簽發(fā)的證書薇宠。

image

安裝證書

網(wǎng)站有不少可以申請免費(fèi)SSL證書的地方,在這里我們用WoSign(沃通)來舉例艰额,點(diǎn)擊申請免費(fèi)SSL證書

填入基本資料后澄港,點(diǎn)擊"提交申請":

image

在"我的訂單"頁面里,點(diǎn)擊"提交CSR":

image

簡單起見柄沮,我們選擇"直接由系統(tǒng)生成CSR"慢睡,然后設(shè)置一個(gè)"證書保護(hù)密碼"(接下來WoSign會把證書打包成一個(gè)ZIP文件,并且由你設(shè)置的"證書保護(hù)密碼"作為解壓密碼)铡溪。確認(rèn)后漂辐,點(diǎn)擊"提交"按鈕。

image

成功簽發(fā)之后棕硫,我們就可以下載證書了髓涯。

image

用之前設(shè)置的"證書保護(hù)密碼"解壓之后,可以看到適用不用HTTP Server的壓縮包:

image

由于Homestead使用的Nginx哈扮,我們進(jìn)一步解壓縮for Nginx.zip纬纪,得到公鑰和私鑰。接下來滑肉,在之前創(chuàng)建的apidemo項(xiàng)目目錄里包各,新建一個(gè)目錄,例如cert靶庙,然后把證書文件復(fù)制到cert目錄问畅,這樣,它們就會被自動同步到vagrant里六荒。之后护姆,我們登錄vagrant:

image

刪除Homestead為apidemo默認(rèn)簽發(fā)的證書:


sudo rm /etc/nginx/ssl/apidemo*

進(jìn)入apidemo項(xiàng)目目錄,把同步進(jìn)來的新證書復(fù)制到/etc/nginx/ssl目錄:


cd /var/www/apidemo/current/cert
sudo cp 1_apidemo.boxue.io_bundle.crt /etc/nginx/ssl/apidemo.boxue.io.crt
sudo cp 2_apidemo.boxue.io.key /etc/nginx/ssl/apidemo.boxue.io.key

檢查nginx配置無誤之后掏击,重新加載nginx配置文件:


sudo nginx -t
sudo service nginx reload

此時(shí)卵皂,再訪問https://apidemo.boxue.io,瀏覽器就不會有安全告警了砚亭。

image

“簡單起見灯变,我們只是搭建了一個(gè)基本的可以用于iOS通信的HTTPS環(huán)境,但這樣的配置并非是足夠安全的捅膘,不要在生產(chǎn)環(huán)境直接這樣配置添祸。”

<small style="box-sizing: border-box; font-size: 14.399951934814453px; font-weight: 400;">特別提示</small>


設(shè)置PHPStorm

搭建好HTTPS環(huán)境之后篓跛,為了能"可視化"Alamofire和HTTPS服務(wù)器的交互膝捞,我們使用PhpStorm來做服務(wù)端開發(fā)工具。大家可以到這里下載免費(fèi)版愧沟。

使用PHPStorm打開之前創(chuàng)建的apidemo項(xiàng)目目錄蔬咬,首次打開的話PhpStorm會檢測名字空間和建立項(xiàng)目索引。

接下來沐寺,點(diǎn)擊"Run"林艘,選擇"Break at first line in PHP scripts"。

image

然后混坞,在vagrant apidemo的項(xiàng)目目錄中狐援,執(zhí)行下面的命令創(chuàng)建一個(gè)處理Alamofire請求的Controller,假設(shè)iOS客戶端請求的URL是/alamofire:


php artisan make:controller AlamofireController --resource

這樣究孕,Laravel就會自動為我們創(chuàng)建一個(gè)AlamofireController啥酱,用來處理/alamofire的REST請求。我們在index()方法里厨诸,添加下面的代碼:


class AlamofireController extends Controller
{
    public function index(Request $request)
    {
        $data = $request->all();
        return response()->json($data);
    }
}

然后镶殷,在data =request->all()設(shè)置一個(gè)斷點(diǎn)。此時(shí)微酬,PhpStorm就已經(jīng)準(zhǔn)備好調(diào)試Alamofire的請求了绘趋。

image

調(diào)試

用Xcode打開我們在上一個(gè)視頻中的例子,把viewDidLoad的代碼改成下面這樣:


let getRequest = "https://apidemo.boxue.io/alamofire?XDEBUG_SESSION_START=PHPSTORM"

Alamofire.request(.GET, getRequest)
    .responseJSON(completionHandler: { response in
        switch response.result {
        case .Success(let json):
            print("JSON: ================")
        case .Failure(let error):
            print("\(error)")
        }
    })

按Command + R編譯執(zhí)行颗管,這時(shí)就會從Xcode跳轉(zhuǎn)到PhpStorm陷遮,由于之前我們設(shè)置了"Break at first line in PHP scripts",于是PhpStorm停在了index.php的第一行垦江,點(diǎn)擊底部的綠色小三角帽馋,我們讓它繼續(xù)執(zhí)行,但是此時(shí)PhpStorm并沒有停在我們設(shè)置的斷點(diǎn)上比吭,這是為什么呢茬斧?

答案是我們忘記了一些事情 _...

首先,在routes.php里梗逮,添加一個(gè)處理/alamofire的路由:


Route::resource("alamofire", "AlamofireController");

然后项秉,去掉Run -> Break at first line in PHP scripts這個(gè)選項(xiàng),回到Xcode慷彤,按Command + R重新編譯執(zhí)行娄蔼。這次,回到PhpStorm底哗,仍舊沒有斷在我們設(shè)置的斷點(diǎn)上岁诉,并且我們可以看到一個(gè)提示:

image

這是因?yàn)椋覀冞€沒有設(shè)置本地源代碼到vagrant server的path mapping跋选,點(diǎn)擊提示中的PHP|Servers涕癣,在彈出的對話框中,設(shè)置好apidemo在Vagrant中的根目錄:

image

點(diǎn)擊OK按鈕回到PhpStorm前标。然后坠韩,我們回到Xcode重新按Command + R編譯執(zhí)行(_這真的是最后一次了哈)距潘。這次,我們會自動跳轉(zhuǎn)到PhpStorm只搁,然后音比,成功停在我們的斷點(diǎn)上了。

image

然后氢惋,我們單步執(zhí)行一次洞翩,點(diǎn)擊窗口底部的debugger標(biāo)簽,在這里焰望,可以看到PHP執(zhí)行過程中骚亿,各種變量的值。點(diǎn)開$data熊赖,就能看到我們來自Alamofire請求的URL參數(shù)了:

image

這時(shí)来屠,我們回到Xcode,就可以在控制臺看到Alamofire成功收到響應(yīng)之后的輸出了:

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秫舌,一起剝皮案震驚了整個(gè)濱河市的妖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌足陨,老刑警劉巖嫂粟,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異墨缘,居然都是意外死亡星虹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門镊讼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宽涌,“玉大人,你說我怎么就攤上這事蝶棋⌒读粒” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵玩裙,是天一觀的道長兼贸。 經(jīng)常有香客問我,道長吃溅,這世上最難降的妖魔是什么溶诞? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮决侈,結(jié)果婚禮上螺垢,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好枉圃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布功茴。 她就那樣靜靜地躺著,像睡著了一般讯蒲。 火紅的嫁衣襯著肌膚如雪痊土。 梳的紋絲不亂的頭發(fā)上肄扎,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天墨林,我揣著相機(jī)與錄音,去河邊找鬼犯祠。 笑死旭等,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衡载。 我是一名探鬼主播搔耕,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼痰娱!你這毒婦竟也來了弃榨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤梨睁,失蹤者是張志新(化名)和其女友劉穎鲸睛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坡贺,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡官辈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遍坟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拳亿。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖愿伴,靈堂內(nèi)的尸體忽然破棺而出肺魁,到底是詐尸還是另有隱情,我是刑警寧澤隔节,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布鹅经,位于F島的核電站,受9級特大地震影響官帘,放射性物質(zhì)發(fā)生泄漏瞬雹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一刽虹、第九天 我趴在偏房一處隱蔽的房頂上張望酗捌。 院中可真熱鬧,春花似錦、人聲如沸胖缤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哪廓。三九已至狗唉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涡真,已是汗流浹背分俯。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哆料,地道東北人缸剪。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像东亦,于是被迫代替她去往敵國和親杏节。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容