最終目的:寫一個接口給我前台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