ÔõÑùÔÚThinkPHP6ÖоÙÐÐRESTful API¿ª·¢£¿
Ëæ×Å»¥ÁªÍøµÄ¿ìËÙÉú³¤£¬Ô½À´Ô½¶àµÄÓ¦ÓÃÐèÒªÌṩapi½Ó¿Ú£¬¹©²î±ðµÄ¿Í»§¶Ë£¨web¡¢app¡¢Ð¡³ÌÐòµÈ£©Å²Óá£ÎªÁËÌá¸ß½Ó¿Ú¿ª·¢Ð§ÂʺͿÉά»¤ÐÔ£¬restful apiÖð½¥³ÉΪÁËapiÉè¼ÆµÄ±ê×¼Ö®Ò»¡£ÄÇô£¬ÔÚthinkphp6ÖÐÔõÑù¾ÙÐÐrestful api¿ª·¢ÄØ£¿½ÓÏÂÀ´ÎÒÃǾÍÀ´¼òÒªÏÈÈÝһϡ£
Ò»¡¢Ê²Ã´ÊÇRESTful API£¿
RESTful APIÊÇÒ»ÖÖAPIÉè¼ÆÀíÄÊÇRepresentational State Transfer£¨±íÊöÐÔ״̬תÒÆ£©µÄËõд£¬Ëü¹Ø×¢ÓÚ²Ù×÷×ÊÔ´µÄÌåÏÖ²ã״̬ת»»¡£RESTful APIͨ³£Ê¹ÓÃHTTPÐÒéÀ´ÊµÏÖÊý¾Ý½»»¥£¬°üÀ¨GET¡¢POST¡¢PUT¡¢DELETEµÈÇëÇó·½·¨¡£
¶þ¡¢ThinkPHP6ÖÐÖ§³ÖRESTful API¿ª·¢£º
ThinkPHP6ÊÇÒ»¿îÇáÁ¿¼¶µÄPHP¿ªÔ´¿ò¼Ü£¬¾ßÓиßЧ¡¢ÎÞа¡¢¿ÉÀ©Õ¹µÄÌص㣬ͬʱҲ֧³ÖRESTful API¿ª·¢¡£ThinkPHP6µÄRESTful API¿ª·¢»ùÓÚ·ÓÉ»úÖÆ£¬Ê¹ÓÿØÖÆÆ÷ºÍÄ£×ÓÀ´Íê³É¶ÔAPI×ÊÔ´µÄ²Ù×÷¡£
Èý¡¢ÔõÑù¾ÙÐÐRESTful API¿ª·¢£¿
ÏÂÃæÎÒÃÇÒÔÒ»¸ö¡°Óû§ÖÎÀí¡±ÎªÀý£¬À´½â˵ÔÚThinkPHP6ÖÐÔõÑù¾ÙÐÐRESTful API¿ª·¢¡£
×¢£º±¾´ÎʾÀý½öÕë¶Ô¼òÆÓµÄÓû§ÖÎÀí£¨CRUD£©²Ù×÷£¬²»°üÀ¨ÊÚȨÈÏÖ¤µÈ¸ß¼¶¹¦Ð§ÊµÏÖ¡£
Á¬Ã¦Ñ§Ï°¡°PHPÃâ·ÑѧϰÌõ¼Ç£¨ÉîÈ룩¡±£»
1¡¢½¨ÉèAPI·ÓÉ
ÔÚThinkPHP6ÖУ¬API·ÓÉÊÇÎÒÃÇʵÏÖRESTful APIµÄÒªº¦£¬¿ÉÒÔͨ¹ý×¢½â·½·¨×Ô¶¯°ó¶¨¿ØÖÆÆ÷ºÍÄ£×Ó£¬²¢½ç˵ÏìÓ¦µÄÇëÇó·½·¨¡£ÔÚ/app/route/api.phpÎļþÖмÓÈëÒÔÏ´úÂ룺
use thinkacadeRoute;
Route::group(‘api’, function(){
// ÅÌÎÊËùÓÐÓû§Áбí (GETÇëÇó) Route::get('users', 'api/User/index'); // ƾ֤Óû§êdzÆÅÌÎÊÓû§ÐÅÏ¢ (GETÇëÇó) Route::get('users/:nickname', 'api/User/read'); // ÐÂÔöÓû§ÐÅÏ¢ (POSTÇëÇó) Route::post('users', 'api/User/save'); // ¸üÐÂÓû§ÐÅÏ¢ (PUTÇëÇó) Route::put('users/:id', 'api/User/update'); // ɾ³ýÓû§ÐÅÏ¢ (DELETEÇëÇó) Route::delete('users/:id', 'api/User/delete');
µÇ¼ºó¸´ÖÆ
});
2¡¢½¨ÉèAPI¿ØÖÆÆ÷
ÔÚ/app/controller/apiĿ¼Ï½¨ÉèUserController.phpÎļþ£¬±àдAPI×ÊÔ´¶ÔÓ¦µÄ²Ù×÷ÒªÁì¡£
declare(strict_type=1);
namespace appcontrollerpi;
use appmodelUser as UserModel;
use thinkRequest;
class UserController
{
// ÅÌÎÊËùÓÐÓû§Áбí public function index() { return UserModel::select(); } // ƾ֤Óû§êdzÆÅÌÎÊÓû§ÐÅÏ¢ public function read($nickname) { $user = UserModel::where('nickname', $nickname)->find(); if($user) { return $user; } else { return '¸ÃÓû§²»±£´æ£¡'; } } // ÐÂÔöÓû§ÐÅÏ¢ public function save(Request $request) { $user = new UserModel; $user->nickname = $request->param('nickname'); $user->email = $request->param('email'); $user->save(); return 'Óû§ÐÂÔöÀֳɣ¡'; } // ¸üÐÂÓû§ÐÅÏ¢ public function update(Request $request, $id) { $user = UserModel::find($id); if($user) { $user->nickname = $request->param('nickname'); $user->email = $request->param('email'); $user->save(); return 'Óû§¸üÐÂÀֳɣ¡'; } else { return '¸ÃÓû§²»±£´æ£¡'; } } // ɾ³ýÓû§ÐÅÏ¢ public function delete($id) { $user = UserModel::find($id); if($user) { $user->delete(); return 'Óû§É¾³ýÀֳɣ¡'; } else { return '¸ÃÓû§²»±£´æ£¡'; } }
µÇ¼ºó¸´ÖÆ
}
3¡¢½¨ÉèAPIÄ£×Ó
ÔÚ/app/modelĿ¼Ï½¨ÉèUser.phpÎļþ£¬ÊµÏÖ¶ÔÓû§±íµÄCURD²Ù×÷¡£
declare(strict_types=1);
namespace appmodel;
use thinkModel;
class User extends Model
{
// Êý¾Ý±íÃû protected $table = 'user'; // Ö÷¼üÃû protected $pk = 'id'; // ½ç˵ʱ¼ä´Á×Ö¶ÎÃû protected $createTime = 'create_time'; protected $updateTime = 'update_time'; // ×Ô¶¯Ê±¼ä´Á protected $autoWriteTimestamp = 'datetime';
µÇ¼ºó¸´ÖÆ
}
4¡¢²âÊÔAPI½Ó¿Ú
Æô¶¯ThinkPHP6Ó¦Óã¬ÔÚPostmanµÈÇ°¶Ë¹¤¾ßÖУ¬Í¨¹ý¶ÔAPI½Ó¿ÚµÄ²âÊÔÀ´ÑéÖ¤¹¦Ð§µÄ׼ȷÐÔºÍÍêÕûÐÔ¡£
ÒÔÉϾÍÊÇÔÚThinkPHP6ÖоÙÐÐRESTful API¿ª·¢µÄÖ÷ÒªÄÚÈÝ¡£Í¨¹ýÕâÖÖ·½·¨£¬ÎÒÃÇ¿ÉÒÔ´ó´ó¼ò»¯API½Ó¿ÚµÄ¿ª·¢Á÷³Ì£¬Ìá¸ß¿ª·¢Ð§ÂʺʹúÂëά»¤ÐÔ¡£²»¹ý£¬ÐèҪעÖصÄÊÇ£¬RESTful APIµÄÉè¼ÆÒªÒÔÊý¾ÝΪ½¹µã£¬½Ó¿ÚŲÓÃÓ¦ÇкÏHTTPÐÒ飬°ü¹Üÿ´ÎÇëÇóµÄЧ¹ûÊÇ¿ÉÔ¤ÆںͿɿ¿µÄ¡£
ÒÔÉϾÍÊÇÔõÑùÔÚThinkPHP6ÖоÙÐÐRESTful API¿ª·¢£¿µÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡