国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

小白的邊學邊寫,一個基于laravel的APP接口【API】(二)

jlanglang / 1644人閱讀

摘要:當注冊成功以后,我們應該立即返回確認用戶登錄的值,并且作為的變量給儲存起來,直到退出時刪除,或者超出時間后刪除。在文檔里也有提及,對,就是那個叫的東東。用戶信息也被正常寫入,之后就可以歡快的擴展注冊機制啦。

前言

根據上一篇文章,我們已經吧dingo/api給安裝并且調試好了,那么下一步,就是來完善咱們的API了。
最首要的步驟一定是要先把注冊的功能給完善了,好了,那就給第一條正式API起個名字吧——

http://localhost/register

首先先對這條API進行分析。這是一個用戶注冊的API,新用戶通過訪問它來注冊賬號,之后才能有權限進行其他的操作,享受其它的APP服務。那么我們在訪問的時候,就應當把正確的信息輸入進去,因為客戶端是APP,所以要輸入的字段應該是這些——(手機號)phone、(密碼)password。
那么在一切準備就緒以后,當服務器處理完操作以后,我們又該獲得什么callback呢?
接下來就是我自己作為一個新手小白的個人理解了。當注冊成功以后,我們應該立即返回確認用戶登錄的token值,并且作為APP的config變量給儲存起來,直到退出時刪除,或者超出時間后刪除。

分析完畢,開始實踐

在開始之前呢,我們要在項目里安裝JWT(JSON WEB TOKEN),這是一種API的驗證方式,詳細的部分可以去看文檔,它的主要作用就是在客戶端的用戶發出注冊和登錄的請求之后,返回一串token值,在之后成功登錄以后以這個token值作為憑證來驗證是否有獲取資源的權限。

如何安裝請看這個JWT

確定安裝好JWT以后,首先就來創建路由吧。
首先打開routes.php,修改路由

Route::post("/register", "AuthAuthenticateController@register");

然后創建一個控制器,在laravel項目下運行

php artisan make:controller Auth/AuthenticateController

接下來,
我們直接用純html頁面當做APP,去測試API,創建新的test文件夾,結構如下

test/
├── css/
│   └── bootstrap.min.css
├── js/
│   ├── jquery.min.js
│   └── bootstrap.min.js
├── fonts/
│   ├── glyphicons-halflings-regular.eot
│   ├── glyphicons-halflings-regular.svg
│   ├── glyphicons-halflings-regular.ttf
│   ├── glyphicons-halflings-regular.woff
│   └── glyphicons-halflings-regular.woff2
└── register.html

在register.html文件里添加內容



    
      
      
      
      注冊
      
    
    
        
        
注冊

AuthenticateController里添加如下函數

only("email", "password");

        try {
            // attempt to verify the credentials and create a token for the user
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()->json(["error" => "invalid_credentials"], 401);
            }
        } catch (JWTException $e) {
            // something went wrong whilst attempting to encode the token
            return response()->json(["error" => "could_not_create_token"], 500);
        }

        // all good so return the token
        return response()->json(compact("token"));
    }

    public function register(Request $request) {

        $newUser = [ 
            "name" => $request->get("name"),
            "phone" => $request->get("phone"),
            "password" => bcrypt($request->get("password")),
        ];
        $user = User::create($newUser);
        $token = JWTAuth::fromUser($user);

        return response()->json(compact("token"));
    }
}

例子很簡單,就是儲存請求的數據然后返回token值。

這里就不得不來說說我遇到的一個大坑

其實按照以上的代碼完全可以將新用戶寫入數據庫的。但是!
token值不能被返回!這就讓人很頭大了。于是我又看了看文章,發現以上的那些操作叫做跨域請求。在laravel文檔里也有提及,對,就是那個叫jsonp的東東。于是又看了些文章,把ajax方法修改成了這個樣子

$.ajax({
    type: "get",
    url: "http://localhost/register",
    data: $(this).serialize(),
    async: false,
    dataType:"jsonp",
    jsonp: "callback"
    success: function(data){
        alert(JSON.stringify(data)); 
    },
    complete: function(){
        alert("ok");
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert(XMLHttpRequest.status);
        alert(XMLHttpRequest.readyState);
        alert(textStatus);
    }
});

這下又可以寫進去了,但是呢!還是沒有token值的出現。。。
而且呢,請求方式也被換成了get,這是為什么呢?后來才知道這是因為jsonppost根本不可能實現,或者說實現起來太難,所以我也就不為難自己了。我到那時就完全的跑偏了。。。又把ajax的方法改了回去,打開控制臺,再試一遍,才發現,原來想要實現跨域,要在請求的header中加入Access-Control-Allow-Origin屬性。
這下子感覺有希望了,于是立即創建一個http中間件吧。

php artisan make:middleware AccessMiddleware

在里面寫上


記得在kernel.php文件中注冊中間件喲,在$routeMiddleware里添加

"access" => AppHttpMiddlewareAccessMiddleware::class,

接下來再來修改路由

Route::group(["middleware" => "access"], function () {
    Route::post("/register","AuthAuthenticateController@register");
});

然后再來測試一下,輸入表單,點立即注冊,之后bingo,token值出來了。

用戶信息也被正常寫入,之后就可以歡快的擴展注冊機制啦。
在這里先規劃一下吧。首先在控制器內添加表單驗證,然后返回不同的json數據給客戶端。但是畢竟我不是專業的,我只是愛好這個才去寫這些東西的,關于應該返回什么數據現在腦子里還是一片混亂。如果有大神偶然間看到了我的這篇文章,希望可以給我一點指導和建議,十分的感謝!

最后

上面的例子完全是我自己看文檔+原創給整出來的,如果有錯請及時告訴我喲~
上面的例子到最后雖然都實現了,但是我仍然覺得很 low,畢竟個人的智慧還是有限的。如果大家有對這個十分感興趣,可以聯系我,咱們可以一起邊學邊做,共同進步!我的郵箱:lwx12525@qq.com
如果恰巧大神路過,請務必給我一些指導,小白將萬分的感謝 O(∩_∩)O~~

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21432.html

相關文章

  • 小白邊寫一個基于laravelAPP接口API】(

    摘要:當注冊成功以后,我們應該立即返回確認用戶登錄的值,并且作為的變量給儲存起來,直到退出時刪除,或者超出時間后刪除。在文檔里也有提及,對,就是那個叫的東東。用戶信息也被正常寫入,之后就可以歡快的擴展注冊機制啦。 前言 根據上一篇文章,我們已經吧dingo/api給安裝并且調試好了,那么下一步,就是來完善咱們的API了。最首要的步驟一定是要先把注冊的功能給完善了,好了,那就給第一條正式API...

    skinner 評論0 收藏0
  • 小白邊寫一個基于laravelAPP接口API】(一)

    摘要:前期準備原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。框架,是我最喜歡的框架了,沒有之一。 前期準備 原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開始折騰APP了,話說現在開...

    Nosee 評論0 收藏0
  • 小白邊寫一個基于laravelAPP接口API】(一)

    摘要:前期準備原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。框架,是我最喜歡的框架了,沒有之一。 前期準備 原文地址前言,為什么做以及要做個啥本人姓小名白,不折不扣編程屆小白一名,但是自從大一那會兒接觸到編程這件奇妙的事情,就完完全全的陷入的程序的世界。這不,最近又開始折騰APP了,話說現在開...

    StonePanda 評論0 收藏0

發表評論

0條評論

jlanglang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<