thinkphp5.1*版本 做api接口實踐記錄 一 從安裝到調通第一個接口


最終目的:寫一個接口給我前台ajax調用

一:安裝5.1.*版本

從5.1版本開始安裝使用git 安裝下載 這參考 5.1*版本文檔即可 (注意 php5.6版本以上)

https://www.kancloud.cn/manual/thinkphp5_1/353948

學到一點 git clone https://github.com/top-think/think tp5 這個git語句后面 加了個 tp5 之前沒這么用過 還有點困惑,他的功能--算是重新命名了目錄的文件夾

二:出現的錯誤是:No input file specified

安裝成功 打開默認的首頁沒問題,但是打開程序自帶的其他模塊路徑 就出現 No input file specified 錯誤

百度得知  在域名后面加上 index.php 才可以

最終解決方法

 

把下面的內容保存為.htaccess文件放到應用入口文件的同級public文件目錄下 代碼如下:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] //其實tp5的該地方已經存在這樣的文件了,只不過是在 index.php后面加了個 ? 就行
</IfModule>

修改之前:http://你的域名/index.php/home
修改之后:http://你的域名/home

三:開始 第一個接口 實現

1.數據庫 表 表中的信息 這些准備好!

2.在 application  文件下 建立 api文件夾 ,在api文件夾下分別建立 controller 和 model文件夾,分別存放控制器和模型

3.編寫控制器 controller 下建立 UserController.php 代碼 如下

<?php
namespace app\api\controller;//注意寫准確命名空間
use think\Controller;
class UserController extends Controller //類名字 和控制器名字一樣
{
    public function read()
    {
        $uid = input('uid');
        $model = model('User');
        $data = $model->getUsers($uid);// 查詢數據---模型下的方法
        if ($data) {
            $code = 200;
        } else {
            $code = 404;
        }
        $data = [
            'code' => $code,
            'data' => $data
        ];
        return json($data);
    }
}

4.編寫模型 model下新建立User.php 代碼 如下

<?php
namespace app\api\model;

use think\Model;
use think\Db;
class User extends Model{
    public function getUsers($uid = 1){
        $res = Db::name('users')->where('uid', $uid)->select();
        // echo $this->getLastSql();
        return $res;
    } 
}    

5.編寫路由

注意:5.1版本將路由單獨拿出來了 和 application同級的 

在route文件下 編寫 route.php

代碼

Route::rule('user/:uid','api/UserController/read');
//api模塊 UserController 控制器的  read方法
Route::rule('user','api/UserController/read');

//上面兩個路由寫法是一個,只不過參數定義的位子不一樣 

6 檢測效果 

先用第一個路由方式 網址輸入 http://www.thinkapi.com/user/1  

見到如下結果 

可以爭取的取到數據庫的信息

再用第二個路由方式 網址輸入 http://www.thinkapi.com/user

見到如下結果 

依然是調通的,但沒有拿到參數

7.結合ajax 使用,直接上代碼

    var data ={"uid":'1'}
    var url1 = 'http://www.thinkapi.com/user/1';
    var url2 = 'http://www.thinkapi.com/user';
    $.ajax({
        type:"post",
        url:"http://www.thinkapi.com/user",
        async:true,
        data:data,
        success:function(res){
            console.log(res)
        },
        error:function(err){
            console.log(err)
        }
    });
//注意 :url1 默認后面跟了參數 
//data 數據 要用json對象格式的,

瀏覽器ajax也能獲取到數據!!

目標完成

 

 

 

6666

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM