{"id":1025,"date":"2025-06-12T05:10:17","date_gmt":"2025-06-11T21:10:17","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/1025.html"},"modified":"2025-06-12T05:10:17","modified_gmt":"2025-06-11T21:10:17","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8-laravel-%e4%b8%ad%e5%88%9b%e5%bb%ba%e4%b8%8d%e4%bd%bf%e7%94%a8%e8%a7%86%e5%9b%be%e7%9a%84-rest-api","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1025.html","title":{"rendered":"\u5982\u4f55\u5728 Laravel \u4e2d\u521b\u5efa\u4e0d\u4f7f\u7528\u89c6\u56fe\u7684 REST API"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#21019;&#24314;&#19981;&#20351;&#29992;&#35270;&#22270;&#30340; REST API &#36890;&#24120;&#28041;&#21450;&#20197;&#19979;&#20960;&#20010;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#23433;&#35013; Laravel<\/strong>&#65306;&#22914;&#26524;&#20320;&#36824;&#27809;&#26377;&#23433;&#35013; Laravel&#65292;&#21487;&#20197;&#20351;&#29992; Composer &#26469;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer create-project --prefer-dist laravel\/laravel my-api<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#29983;&#25104;&#25511;&#21046;&#22120;<\/strong>&#65306;&#20351;&#29992; Artisan &#21629;&#20196;&#26469;&#29983;&#25104;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#12290;&#20363;&#22914;&#65292;&#29983;&#25104;&#19968;&#20010;&#21517;&#20026; <code>ProductsController<\/code> &#30340;&#25511;&#21046;&#22120;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller ProductsController<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#37197;&#32622;&#36335;&#30001;<\/strong>&#65306;&#22312; <code>routes\/api.php<\/code> &#25991;&#20214;&#20013;&#37197;&#32622;&#36335;&#30001;&#20197;&#22788;&#29702;&#35831;&#27714;&#12290;&#20551;&#35774;&#25105;&#20204;&#35201;&#22788;&#29702;&#20135;&#21697;&#21015;&#34920;&#21644;&#35814;&#24773;&#65292;&#21487;&#20197;&#36825;&#26679;&#37197;&#32622;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersProductsController;\nuse IlluminateSupportFacadesRoute;\n\nRoute::get('\/products', [ProductsController::class, 'index']);\nRoute::get('\/products\/{id}', [ProductsController::class, 'show']);<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#23454;&#29616;&#25511;&#21046;&#22120;&#26041;&#27861;<\/strong>&#65306;&#22312; <code>app\/Http\/Controllers\/ProductsController.php<\/code> &#25991;&#20214;&#20013;&#23454;&#29616;&#25511;&#21046;&#22120;&#30340;&#26041;&#27861;&#12290;&#20363;&#22914;&#65292;&#33719;&#21462;&#25152;&#26377;&#20135;&#21697;&#21015;&#34920;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse AppModelsProduct;\nuse IlluminateHttpRequest;\n\nclass ProductsController extends Controller\n{\n   public function index()\n   {\n       return Product::all();\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#37197;&#32622;&#25968;&#25454;&#24211;<\/strong>&#65288;&#22914;&#26524;&#38656;&#35201;&#65289;&#65306;&#30830;&#20445;&#20320;&#30340;&#25968;&#25454;&#24211;&#20013;&#26377;&#19968;&#20010;&#21517;&#20026; <code>products<\/code> &#30340;&#34920;&#65292;&#24182;&#19988;&#24050;&#32463;&#36801;&#31227;&#20102;&#27169;&#22411;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#27979;&#35797; API<\/strong>&#65306;&#20320;&#21487;&#20197;&#20351;&#29992; Postman &#25110; cURL &#26469;&#27979;&#35797;&#20320;&#30340; API&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65292;&#20351;&#29992; cURL &#33719;&#21462;&#25152;&#26377;&#20135;&#21697;&#30340;&#21015;&#34920;&#65306;<\/p>\n<pre><code class=\"language-bash\">curl -X GET http:\/\/localhost:8000\/api\/products<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#20248;&#21270;&#24615;&#33021;<\/strong>&#65306;&#26681;&#25454;&#38656;&#35201;&#23545; API &#36827;&#34892;&#20248;&#21270;&#65292;&#27604;&#22914;&#32531;&#23384;&#32467;&#26524;&#12289;&#22788;&#29702;&#25209;&#37327;&#25805;&#20316;&#31561;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#23601;&#21487;&#20197;&#22312; Laravel &#20013;&#21019;&#24314;&#19968;&#20010;&#19981;&#20351;&#29992;&#35270;&#22270;&#30340; REST API&#12290;&#36825;&#20010;&#36807;&#31243;&#28041;&#21450;&#21040;&#25511;&#21046;&#22120;&#12289;&#36335;&#30001;&#12289;&#27169;&#22411;&#21644;&#19968;&#20123;&#22522;&#26412;&#30340; API &#35831;&#27714;&#22788;&#29702;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>RESTful APIs &#26159;&#29616;&#20195; Web &#24212;&#29992;&#31243;&#24207;&#30340;&#22522;&#30707;&#65292;&#20026;&#21508;&#31181;&#31995;&#32479;&#25552;&#20379;&#20102;&#20114;&#30456;&#36890;&#20449;&#30340;&#26041;&#27861;&#12290;Laravel&#65292;&#19968;&#20010;&#24378;&#22823;&#30340; PHP &#26694;&#26550;&#65292;&#20351;&#26500;&#24314;&#36825;&#20123; API &#38750;&#24120;&#31616;&#21333;&#65292;&#24378;&#35843;&#31616;&#27905;&#12289;&#20248;&#38597;&#21644;&#21487;&#35835;&#24615;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#36890;&#36807;&#19981;&#20351;&#29992;&#20256;&#32479;&#35270;&#22270;&#30340;&#26041;&#24335;&#65292;&#20171;&#32461;&#22914;&#20309;&#22312; Laravel &#20013;&#21019;&#24314;&#19968;&#20010; RESTful API&#12290;<\/p><h2>&#35774;&#32622;&#29615;&#22659;<\/h2><p>&#22312;&#24320;&#22987;&#20043;&#21069;&#65292;&#24744;&#38656;&#35201;&#20808;&#35774;&#32622;Laravel&#29615;&#22659;&#12290;&#22914;&#26524;&#24744;&#23578;&#26410;&#23433;&#35013;Laravel&#65292;&#35831;&#25353;&#29031;&#23448;&#26041;Laravel&#25991;&#26723;&#36827;&#34892;&#25805;&#20316;&#12290;&#19968;&#26086;&#23433;&#35013;&#20102;Laravel&#65292;&#24744;&#21487;&#20197;&#20351;&#29992;&#20197;&#19979;&#21629;&#20196;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#39033;&#30446;&#65306;<\/p><pre><code>composer create-project --prefer-dist laravel\/laravel laravel-rest-api<\/code><\/pre><p>&#22312;&#21019;&#24314;&#39033;&#30446;&#21518;&#65292;&#36827;&#20837;&#39033;&#30446;&#30446;&#24405;&#65306;<\/p><pre><code>cd laravel-rest-api<\/code><\/pre><h2>&#25968;&#25454;&#24211;&#37197;&#32622;<\/h2><p>&#22312;&#39033;&#30446;&#30446;&#24405;&#19979;&#65292;&#19979;&#19968;&#27493;&#26159;&#35201;&#37197;&#32622;&#25968;&#25454;&#24211;&#12290;&#25171;&#24320;&#23427;&#12290;<code>.env<\/code>&#23558;&#25991;&#20214;&#25918;&#32622;&#22312;&#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#65292;&#24182;&#26681;&#25454;&#24744;&#30340;&#25968;&#25454;&#24211;&#35774;&#32622;&#20462;&#25913;&#25968;&#25454;&#24211;&#37197;&#32622;&#36873;&#39033;&#65306;<\/p><pre><code>DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=laravel_api\nDB_USERNAME=root\nDB_PASSWORD=<\/code><\/pre><p>&#22914;&#26524;&#25968;&#25454;&#24211;&#23578;&#26410;&#23384;&#22312;&#65292;&#35831;&#35760;&#24471;&#21019;&#24314;&#23427;&#12290;<\/p><h2>&#21019;&#24314;&#27169;&#22411;&#12289;&#36801;&#31227;&#21644;&#25511;&#21046;&#22120;<\/h2><p>Laravel &#30340; artisan &#21629;&#20196;&#20351;&#24471;&#29983;&#25104;&#22522;&#26412;&#30340; MVC &#26550;&#26500;&#21464;&#24471;&#38750;&#24120;&#23481;&#26131;&#12290;&#23545;&#20110;&#36825;&#20010;&#25945;&#31243;&#65292;&#35753;&#25105;&#20204;&#24819;&#35937;&#25105;&#20204;&#27491;&#22312;&#20026;&ldquo;&#20070;&#31821;&rdquo;&#21019;&#24314;&#19968;&#20010; API&#12290;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#20197;&#21019;&#24314;&#19982;&#27169;&#22411;&#30456;&#20851;&#30340;&#36801;&#31227;&#21644;&#25511;&#21046;&#22120;&#65306;<\/p><pre><code>php artisan make:model Book -m -c<\/code><\/pre><p>&#36825;&#23558;&#20250;&#21019;&#24314;&#19968;&#20010;<code>Book<\/code>&#27169;&#22411;&#65292;&#19968;&#20010;&#29992;&#20110;&#20070;&#31821;&#34920;&#30340;&#36801;&#31227;&#25991;&#20214;&#65292;&#21644;&#19968;&#20010;&#29992;&#20110;&#29992;&#25143;&#34920;&#30340;&#36801;&#31227;&#25991;&#20214;&#12290;<code>BookController<\/code>&#24050;&#32463;&#25910;&#21040;&#20449;&#24687;&#65292;&#27491;&#22312;&#20026;&#24744;&#36827;&#34892;&#32763;&#35793;&#12290;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><h2>&#23450;&#20041;&#31227;&#27665;<\/h2><p>&#35831;&#25552;&#20379;&#38656;&#35201;&#32534;&#36753;&#30340;&#36801;&#31227;&#25991;&#20214;&#30340;&#20855;&#20307;&#36335;&#24452;&#65292;&#20197;&#20415;&#25105;&#36827;&#34892;&#30456;&#24212;&#30340;&#32763;&#35793;&#21644;&#22788;&#29702;&#12290;<code>database\/migrations<\/code>&#35831;&#23450;&#20041;&#20070;&#31821;&#34920;&#30340;&#32467;&#26500;&#65306;<\/p><pre><code>public function up()\n{\n    Schema::create('books', function (Blueprint $table) {\n        $table-&gt;id();\n        $table-&gt;string('title');\n        $table-&gt;string('author');\n        $table-&gt;timestamps();\n    });\n}\n<\/code><\/pre><p>&#36816;&#34892;&#36801;&#31227;&#26102;&#65292;&#35831;&#20351;&#29992;&#20197;&#19979;&#21629;&#20196;&#65306;<\/p><pre><code>php artisan migrate<\/code><\/pre><h2>&#35774;&#32622;&#36335;&#32447;<\/h2><p>&#22312;Laravel&#20013;&#65292;&#23450;&#20041;API&#36335;&#30001;&#26159;&#22312;&#25511;&#21046;&#22120;&#20013;&#23454;&#29616;&#30340;&#12290;<code>routes\/api.php<\/code>&#35831;&#21442;&#38405;&#20197;&#19979;&#20869;&#23481;&#65292;&#20197;&#22788;&#29702;RESTful&#25805;&#20316;&#65306;<\/p><pre><code>use AppHttpControllersBookController;\n\nRoute::apiResource('books', BookController::class);<\/code><\/pre><h2>&#26500;&#24314;&#25511;&#21046;&#22120;<\/h2><p>&#32534;&#36753;&#12290;<code>BookController<\/code>&#22788;&#29702;CRUD&#25805;&#20316;&#12290;&#20197;&#19979;&#26159;&#33719;&#21462;&#20070;&#31821;&#21015;&#34920;&#30340;&#19968;&#20010;&#31034;&#20363;&#26041;&#27861;&#65306;<\/p><pre><code>public function index()\n{\n    return Book::all();\n}\n<\/code><\/pre><p>&#23545;&#20110;&#21019;&#20316;&#19968;&#26412;&#26032;&#20070;&#65306;<\/p><pre><code>public function store(Request $request)\n{\n    $book = Book::create($request-&gt;all());\n    return response()-&gt;json($book, 201);\n}\n<\/code><\/pre><p>&#32487;&#32493;&#23436;&#21892;&#26041;&#27861;<code>show()<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>update()<\/code>&#21644;&#25105;&#26377;&#20160;&#20040;&#38382;&#39064;&#21527;&#65311;<code>destroy()<\/code>&#23545;&#20110;&#26597;&#30475;&#21333;&#26412;&#20070;&#12289;&#26356;&#26032;&#19968;&#26412;&#20070;&#21644;&#21024;&#38500;&#19968;&#26412;&#20070;&#65292;&#20998;&#21035;&#23545;&#24212;&#30340;&#21151;&#33021;&#12290;<\/p><h2>&#27491;&#22312;&#27979;&#35797;API&#12290;<\/h2><p>&#20026;&#20102;&#27979;&#35797;&#25105;&#20204;&#30340;API&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992;&#22914;Postman&#25110;cURL&#31561;&#24037;&#20855;&#12290;&#35201;&#33719;&#21462;&#25152;&#26377;&#20070;&#31821;&#65306;<\/p><pre><code>GET \/api\/books<\/code><\/pre><p>&#20026;&#20102;&#21019;&#24314;&#19968;&#26412;&#26032;&#20070;&#65306;<\/p><pre><code>POST \/api\/books\n{\n    \"title\": \"My New Book\",\n    \"author\": \"Author Name\"\n}<\/code><\/pre><p>&#35831;&#21153;&#24517;&#22312;&#24744;&#30340;&#22836;&#37096;&#23383;&#27573;&#20013;&#21253;&#21547;&#12290;<code>Content-Type: application\/json<\/code>&#22312;&#36827;&#34892;POST&#35831;&#27714;&#26102;&#12290;<\/p><h2>&#30830;&#20445;API&#30340;&#23433;&#20840;&#24615;<\/h2><p>&#23433;&#20840;&#22312;&#21019;&#24314;API&#26102;&#33267;&#20851;&#37325;&#35201;&#12290;Laravel&#25552;&#20379;&#20102;&#20960;&#31181;&#26041;&#27861;&#26469;&#20445;&#25252;&#24744;&#30340;API&#12290;&#24744;&#21487;&#20197;&#20351;&#29992;&#30001;Laravel Sanctum&#25552;&#20379;&#30340;&#20196;&#29260;&#36523;&#20221;&#39564;&#35777;&#65292;&#25110;&#32773;&#36873;&#25321;Laravel Passport&#65292;&#21518;&#32773;&#25552;&#20379;&#20102;&#19968;&#20010;&#23436;&#25972;&#30340;OAuth2&#26381;&#21153;&#22120;&#23454;&#29616;&#12290;<\/p><p>&#35831;&#21442;&#38405;&#65306;<\/p><p>&#22312;Laravel&#20013;&#23454;&#29616;&#23494;&#30721;&#30331;&#24405;&#30340;&#26041;&#27861;&#22914;&#19979;&#65306;\n\n&#39318;&#20808;&#65292;&#30830;&#20445;&#24050;&#32463;&#23433;&#35013;&#20102;Laravel&#26694;&#26550;&#21644;PHP&#29615;&#22659;&#12290;\n\n&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#24212;&#29992;&#25110;&#20351;&#29992;&#29616;&#26377;&#24212;&#29992;&#12290;\n\n&#22312;config\/auth.php&#25991;&#20214;&#20013;&#37197;&#32622;&#36523;&#20221;&#39564;&#35777;&#26041;&#24335;&#20026;&#8217;password&#8217;&#12290;\n\n&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#20197;&#29983;&#25104;&#25511;&#21046;&#22120;&#12289;&#36335;&#30001;&#21644;&#27169;&#22411;&#65306;\nphp artisan make:controller AuthController &#8211;resource\n\n&#22312;AuthController&#20013;&#28155;&#21152;&#20197;&#19979;&#20195;&#30721;&#26469;&#22788;&#29702;&#30331;&#24405;&#35831;&#27714;&#65306;\nuse IlluminateHttpRequest;\n\nclass AuthController extends Controller\n{\n public function __construct()\n {\n $this-&gt;middleware(&#8216;guest&#8217;)-&gt;except([&#8216;logout&#8217;]);\n }\n\n public function showLoginForm()\n {\n return view(&#8216;auth.login&#8217;);\n }\n\n public function login(Request $request)\n {\n $this-&gt;validate($request, [\n &#8217;email&#8217; =&gt; &#8216;required|email&#8217;,\n &#8216;password&#8217; =&gt; &#8216;required&#8217;\n ]);\n\n if (Auth::attempt([&#8217;email&#8217; =&gt; $request[&#8217;email&#8217;], &#8216;password&#8217; =&gt; $request[&#8216;password&#8217;]])) {\n return redirect()-&gt;intended(&#8216;\/&#8217;);\n } else {\n return back()-&gt;withErrors([\n &#8217;email&#8217; =&gt; &#8216;Invalid email or password.&#8217;\n ]);\n }\n }\n\n public function logout()\n {\n Auth::logout();\n return redirect(&#8216;\/login&#8217;);\n }\n}\n\n&#22312;resources\/views\/auth\/login.blade.php&#20013;&#21019;&#24314;&#30331;&#24405;&#34920;&#21333;&#65306;\n&lt;form method=&#8221;POST&#8221; action=&#8221;{{ route(&#8216;login&#8217;) }}&#8221;&gt;\n @csrf\n\n &lt;div&gt;\n &lt;label for=&#8221;email&#8221;&gt;Email:&lt;\/label&gt;\n &lt;input type=&#8221;email&#8221; id=&#8221;email&#8221; name=&#8221;email&#8221;&gt;\n &lt;\/div&gt;\n\n &lt;div&gt;\n &lt;label for=&#8221;password&#8221;&gt;Password:&lt;\/label&gt;\n &lt;input type=&#8221;password&#8221; id=&#8221;password&#8221; name=&#8221;password&#8221;&gt;\n &lt;\/div&gt;\n\n &lt;button type=&#8221;submit&#8221;&gt;Login&lt;\/button&gt;\n&lt;\/form&gt;\n\n&#20462;&#25913;routes\/web.php&#20197;&#21253;&#21547;&#30331;&#24405;&#36335;&#30001;&#65306;\nRoute::get(&#8216;\/login&#8217;, [AppHttpControllersAuthAuthController::class, &#8216;showLoginForm&#8217;])-&gt;name(&#8216;login&#8217;);\nRoute::post(&#8216;\/login&#8217;, [AppHttpControllersAuthAuthController::class, &#8216;login&#8217;])-&gt;name(&#8216;login.submit&#8217;);\n\n&#28155;&#21152;&#36335;&#30001;&#36339;&#36716;&#65306;\nRoute::get(&#8216;\/register&#8217;, [AppHttpControllersAuthRegisterController::class, &#8216;create&#8217;])\n -&gt;name(&#8216;register&#8217;);\n\nRoute::post(&#8216;\/register&#8217;, [AppHttpControllersAuthRegisterController::class, &#8216;store&#8217;]);\n\nRoute::get(&#8216;\/forgot-password&#8217;, [AppHttpControllersForgotPasswordController::class, &#8216;show&#8217;])\n -&gt;name(&#8216;password.request&#8217;);\n\nRoute::post(&#8216;\/reset-password\/{token}&#8217;, [AppHttpControllersResetPasswordController::class, &#8216;show&#8217;])\n -&gt;name(&#8216;password.reset&#8217;);\n\nRoute::patch(&#8216;\/reset-password&#8217;, [AppHttpControllersResetPasswordController::class, &#8216;update&#8217;]);\n\n&#23436;&#25104;&#24182;&#36816;&#34892;&#24212;&#29992;&#65292;&#29616;&#22312;&#29992;&#25143;&#21487;&#20197;&#20351;&#29992;&#20182;&#20204;&#30340;&#30005;&#23376;&#37038;&#20214;&#22320;&#22336;&#21644;&#23494;&#30721;&#36827;&#34892;&#30331;&#24405;&#12290;\n\n&#27880;&#24847;&#65306;&#27492;&#31034;&#20363;&#20013;&#30340;&#25152;&#26377;&#25511;&#21046;&#22120;&#21644;&#35270;&#22270;&#21517;&#31216;&#37117;&#26159;&#20551;&#35774;&#30340;&#65292;&#23454;&#38469;&#35831;&#26681;&#25454;&#20320;&#30340;&#39033;&#30446;&#32467;&#26500;&#35843;&#25972;&#36825;&#20123;&#21517;&#31216;&#12290;&#27492;&#22806;&#65292;&#35831;&#30830;&#20445;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#23545;&#25935;&#24863;&#25968;&#25454;&#36827;&#34892;&#36866;&#24403;&#30340;&#23433;&#20840;&#22788;&#29702;&#12290;<\/p><p>&#22312;Laravel&#20013;&#23454;&#29616;Facebook&#30331;&#24405;&#30340;&#26041;&#27861;&#22914;&#19979;&#65306;\n\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;Facebook&#24212;&#29992;&#24182;&#33719;&#21462;&#20854;App ID&#21644;App Secret&#12290;\n\n&#22312;&#20320;&#30340;Laravel&#39033;&#30446;&#20013;&#65292;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#65292;&#20363;&#22914; UserController&#65292;&#24182;&#22312;&#20854;&#20013;&#28155;&#21152;&#20197;&#19979;&#20195;&#30721;&#26469;&#22788;&#29702;Facebook&#30331;&#24405;&#35831;&#27714;&#65306;\n\nuse IlluminateSupportFacadesAuth;\nuse Socialite;\n\nclass UserController extends Controller\n{\n public function facebookLogin()\n {\n return Socialite::driver(&#8216;facebook&#8217;)-&gt;redirect();\n }\n\n public function facebookCallback()\n {\n $data = Socialite::driver(&#8216;facebook&#8217;)-&gt;user();\n\n \/\/ &#33719;&#21462;&#29992;&#25143;&#30340;ID&#21644;&#20854;&#20182;&#20449;&#24687;\n\n Auth::login($data-&gt;getProviderUser());\n\n return redirect(&#8216;\/dashboard&#8217;);\n }\n}\n\n&#28982;&#21518;&#65292;&#22312;&#20320;&#30340;&#36335;&#30001;&#25991;&#20214;&#65288;&#20363;&#22914; routes\/web.php&#65289;&#20013;&#28155;&#21152;&#20197;&#19979;&#20195;&#30721;&#26469;&#37197;&#32622;Facebook&#30331;&#24405;&#30340;URL&#65306;\n\nRoute::get(&#8216;\/auth\/facebook&#8217;, &#8216;UserController@facebookLogin&#8217;);\n\nRoute::get(&#8216;\/auth\/facebook\/callback&#8217;, &#8216;UserController@facebookCallback&#8217;);\n\n&#26368;&#21518;&#65292;&#30830;&#20445;&#22312;&#20320;&#30340; .env &#25991;&#20214;&#20013;&#35774;&#32622;Facebook App&#30340;App ID&#21644;App Secret&#65306;\n\nFACEBOOK_APP_ID=your_app_id\nFACEBOOK_APP_SECRET=your_app_secret\n\n&#20445;&#23384;&#25152;&#26377;&#26356;&#25913;&#24182;&#36816;&#34892;&#20320;&#30340;Laravel&#24212;&#29992;&#31243;&#24207;&#12290;&#29616;&#22312;&#65292;&#29992;&#25143;&#21487;&#20197;&#36890;&#36807;&#35775;&#38382; \/auth\/facebook &#36335;&#24452;&#26469;&#30331;&#24405;&#21040;&#20320;&#30340;&#24212;&#29992;&#31243;&#24207;&#12290;&#20182;&#20204;&#23558;&#34987;&#37325;&#23450;&#21521;&#21040;Facebook&#36827;&#34892;&#36523;&#20221;&#39564;&#35777;&#65292;&#28982;&#21518;&#36820;&#22238;&#21040;&#20320;&#30340;&#24212;&#29992;&#31243;&#24207;&#24182;&#34987;&#33258;&#21160;&#30331;&#24405;&#12290;\n\n&#27880;&#24847;&#65306;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#65292;&#35831;&#20351;&#29992;&#29615;&#22659;&#21464;&#37327;&#26469;&#23384;&#20648;&#25935;&#24863;&#20449;&#24687;&#65292;&#32780;&#19981;&#26159;&#30828;&#32534;&#30721;&#23427;&#20204;&#12290;<\/p><p>&#22312;Laravel&#20013;&#23454;&#29616;Google Sign-in&#30340;&#27493;&#39588;&#22914;&#19979;&#65306;\n\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23433;&#35013;&#24182;&#37197;&#32622;Google API&#23458;&#25143;&#31471;&#24211;&#21644;OAuth 2.0&#26381;&#21153;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;Composer&#26469;&#23433;&#35013;&#36825;&#20123;&#20381;&#36182;&#12290;\n\ncomposer require google\/apiclient:^2.0\n\n&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#25110;&#20462;&#25913;&#29616;&#26377;&#30340;&#25511;&#21046;&#22120;&#20197;&#22788;&#29702;&#29992;&#25143;&#30331;&#24405;&#35831;&#27714;&#12290;&#36825;&#20010;&#25511;&#21046;&#22120;&#38656;&#35201;&#25509;&#25910;&#29992;&#25143;&#30340;&#30005;&#23376;&#37038;&#20214;&#22320;&#22336;&#20316;&#20026;&#21442;&#25968;&#12290;\n\n&#22312;&#25511;&#21046;&#22120;&#20013;&#21019;&#24314;&#19968;&#20010;&#26041;&#27861;&#26469;&#33719;&#21462;&#29992;&#25143;&#20449;&#24687;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#35843;&#29992;Google&#30340;API&#26469;&#23436;&#25104;&#12290;\n\n&#28982;&#21518;&#65292;&#22312;&#36335;&#30001;&#25991;&#20214;&#20013;&#23450;&#20041;&#19968;&#20010;&#36335;&#30001;&#65292;&#20197;&#20415;&#29992;&#25143;&#21487;&#20197;&#35775;&#38382;&#27492;&#25511;&#21046;&#22120;&#30340;&#26041;&#27861;&#12290;\n\n&#26368;&#21518;&#65292;&#22312;HTML&#27169;&#26495;&#20013;&#28155;&#21152;&#19968;&#20010;&#25353;&#38062;&#65292;&#24403;&#29992;&#25143;&#28857;&#20987;&#35813;&#25353;&#38062;&#26102;&#65292;&#20250;&#35302;&#21457;&#29992;&#25143;&#30331;&#24405;&#36807;&#31243;&#12290;\n\n&#20026;&#20102;&#39564;&#35777;&#29992;&#25143;&#36523;&#20221;&#65292;&#20320;&#38656;&#35201;&#20351;&#29992;OAuth 2.0&#20196;&#29260;&#12290;&#22312;&#25511;&#21046;&#22120;&#20013;&#65292;&#20320;&#24212;&#35813;&#26816;&#26597;token&#30340;&#26377;&#25928;&#24615;&#65292;&#24182;&#23558;&#20854;&#23384;&#20648;&#22312;&#19968;&#20010;&#23433;&#20840;&#30340;&#22320;&#26041;&#65292;&#22914;&#25968;&#25454;&#24211;&#12290;\n\n&#20351;&#29992;&#23384;&#20648;&#30340;&#20196;&#29260;&#26469;&#33719;&#21462;&#29992;&#25143;&#20449;&#24687;&#65292;&#24182;&#22312;&#21069;&#31471;&#26174;&#31034;&#32473;&#29992;&#25143;&#12290;\n\n&#23545;&#20110;&#23433;&#20840;&#24615;&#32771;&#34385;&#65292;&#30830;&#20445;&#19981;&#35201;&#23558;&#25935;&#24863;&#25968;&#25454;&#65288;&#22914;&#23494;&#30721;&#65289;&#23384;&#20648;&#22312;&#24212;&#29992;&#31243;&#24207;&#20013;&#12290;&#20320;&#21487;&#20197;&#20351;&#29992;JWT&#65288;JSON Web Tokens&#65289;&#26469;&#26367;&#20195;&#12290;\n\n&#26368;&#21518;&#65292;&#20026;&#29992;&#25143;&#25552;&#20379;&#20102;&#19968;&#20010;&#31616;&#21333;&#30340;&#30028;&#38754;&#65292;&#20801;&#35768;&#20182;&#20204;&#27880;&#38144;&#36134;&#25143;&#12290;\n\n&#35831;&#27880;&#24847;&#65292;&#20197;&#19978;&#27493;&#39588;&#20165;&#20026;&#22522;&#26412;&#25351;&#21335;&#65292;&#20855;&#20307;&#23454;&#29616;&#21487;&#33021;&#20250;&#26681;&#25454;&#20320;&#30340;&#38656;&#27714;&#26377;&#25152;&#19981;&#21516;&#12290;&#24314;&#35758;&#21442;&#32771;&#23448;&#26041;&#25991;&#26723;&#21644;&#31034;&#20363;&#20195;&#30721;&#65292;&#20197;&#21450;&#38405;&#35835;&#30456;&#20851;&#30340;&#38169;&#35823;&#26085;&#24535;&#21644;&#35686;&#21578;&#12290;<\/p><h2>&#38169;&#35823;&#22788;&#29702;&#21644;&#21709;&#24212;<\/h2><p>Laravel &#25552;&#20379;&#20102;&#24378;&#22823;&#30340;&#38169;&#35823;&#22788;&#29702;&#21644;&#21709;&#24212;&#26684;&#24335;&#21270;&#24037;&#20855;&#12290;&#20363;&#22914;&#65292;&#20320;&#24212;&#35813;&#22987;&#32456;&#36820;&#22238;&#36866;&#24403;&#30340; HTTP &#29366;&#24577;&#30721;&#12290;&#24322;&#24120;&#21487;&#20197;&#22312;&#20869;&#37096;&#36827;&#34892;&#22788;&#29702;&#12290;<code>render<\/code>&#26041;&#27861;&#26159;&#21738;&#19968;&#20010;&#65311;<code>AppExceptionsHandler<\/code>&#25265;&#27465;&#65292;&#25105;&#19981;&#22826;&#26126;&#30333;&#24744;&#30340;&#24847;&#24605;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#24744;&#30340;&#38382;&#39064;&#25110;&#38656;&#27714;&#65292;&#25105;&#20250;&#23613;&#21147;&#24110;&#21161;&#24744;&#12290;<\/p><p>&#35814;&#35265;&#65306;<\/p><p>&#22312;Laravel&#20013;&#22914;&#20309;&#26381;&#21153;&#38745;&#24577;&#25991;&#20214;&#65311;<\/p><p>&#22312;Laravel&#20013;&#65292;&#36820;&#22238;PDF&#25991;&#20214;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#20960;&#31181;&#26041;&#24335;&#23454;&#29616;&#65306;\n\n&#20351;&#29992;Response::make()&#26041;&#27861;&#65306;\nreturn Response::make(\nview(&#8216;path.to.your.pdf&#8217;, [&#8216;data&#8217; =&gt; $data])-&gt;send(),\n200,\n[\n &#8216;Content-Type&#8217; =&gt; &#8216;application\/pdf&#8217;,\n &#8216;Content-Disposition&#8217; =&gt; &#8216;attachment; filename=&#8221;filename.pdf&#8221;&#8216;\n]\n);\n&#36825;&#23558;&#29983;&#25104;&#19968;&#20010;&#21253;&#21547;PDF&#20869;&#23481;&#30340;&#21709;&#24212;&#12290;\n\n&#20351;&#29992;response()-&gt;file()&#26041;&#27861;&#65306;\nreturn response()-&gt;file(public_path(&#8216;\/path\/to\/your\/file.pdf&#8217;));\n&#36825;&#23558;&#36820;&#22238;&#25351;&#23450;&#36335;&#24452;&#19979;&#30340;PDF&#25991;&#20214;&#12290;\n\n&#21019;&#24314;&#19968;&#20010;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#22788;&#29702;PDF&#19979;&#36733;&#65306;\npublic function downloadPdf()\n{\n\/\/ &#33719;&#21462;&#38656;&#35201;&#19979;&#36733;&#30340;PDF&#25968;&#25454;\n$pdfData = AppYourModel::all();\n\n\/\/ &#21019;&#24314;&#19968;&#20010;&#20020;&#26102;&#25991;&#20214;&#21517;\n$tempFileName = tempnam(sys_get_temp_dir(), &#8216;laravel_pdf_&#8217;);\n\n\/\/ &#23558;PDF&#25968;&#25454;&#20889;&#20837;&#20020;&#26102;&#25991;&#20214;\nfile_put_contents($tempFileName, $pdfData);\n\n\/\/ &#36820;&#22238;&#19979;&#36733;&#38142;&#25509;\nreturn response()-&gt;download($tempFileName, &#8216;filename.pdf&#8217;);\n}\n\n&#20197;&#19978;&#19977;&#31181;&#26041;&#27861;&#37117;&#21487;&#20197;&#23454;&#29616;&#20174;Laravel&#24212;&#29992;&#20013;&#36820;&#22238;PDF&#25991;&#20214;&#30340;&#21151;&#33021;&#12290;&#36873;&#25321;&#21738;&#31181;&#26041;&#27861;&#21462;&#20915;&#20110;&#20855;&#20307;&#38656;&#27714;&#21644;&#24212;&#29992;&#22330;&#26223;&#12290;<\/p><p>&#22312; Laravel &#20013;&#65292;&#21487;&#20197;&#20351;&#29992; GuzzleHttp &#24211;&#26469;&#21387;&#32553;&#21709;&#24212;&#20197;&#25552;&#39640;&#24615;&#33021;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65306;\nuse GuzzleHttpClient;\n\n$client = new Client();\n\n$response = $client-&gt;request(&#8216;GET&#8217;, &#8216;http:\/\/example.com&#8217;);\n\n\/\/ Compress the response using gzip\n$compressedResponse = gzencode($response-&gt;getBody()-&gt;getContents(), 9);\n\n$response-&gt;getBody()-&gt;write($compressedResponse);\n&#36825;&#27573;&#20195;&#30721;&#39318;&#20808;&#21019;&#24314;&#20102;&#19968;&#20010; Client &#23454;&#20363;&#65292;&#28982;&#21518;&#21457;&#20986;&#19968;&#20010; GET &#35831;&#27714;&#21040;&#25351;&#23450;&#30340; URL&#12290;&#28982;&#21518;&#65292;&#23427;&#35843;&#29992; gzencode() &#20989;&#25968;&#23545;&#21709;&#24212;&#20307;&#36827;&#34892;gzip&#21387;&#32553;&#24182;&#20889;&#22238;&#23458;&#25143;&#31471;&#12290;\n&#27880;&#24847;&#65306;&#36825;&#27573;&#20195;&#30721;&#38656;&#35201;&#23433;&#35013;&#21644;&#37197;&#32622; guzzlehttp\/guzzle &#21644; zlib &#25193;&#23637;&#25165;&#33021;&#36816;&#34892;&#12290;<\/p><h2>&#39640;&#32423;&#27010;&#24565;<\/h2><p>&#22312;&#21069;&#36827;&#30340;&#36807;&#31243;&#20013;&#65292;&#20320;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992;API&#36164;&#28304;&#26469;&#23558;&#27169;&#22411;&#36716;&#25442;&#20026;JSON&#26684;&#24335;&#65292;&#23454;&#26045;&#36328;&#28304;&#36164;&#28304;&#20849;&#20139;&#65288;CORS&#65289;&#21644;&#36895;&#29575;&#38480;&#21046;&#20013;&#38388;&#20214;&#65292;&#25110;&#32773;&#20351;&#29992;Laravel&#30340;&#20107;&#20214;&#21644;&#30417;&#21548;&#22120;&#26469;&#21709;&#24212;API&#20107;&#20214;&#12290;<\/p><p>&#35814;&#35265;&#65306;<\/p><p>Laravel&#38431;&#21015;&#31995;&#32479;&#65306;&#36890;&#36807;&#31034;&#20363;&#36827;&#34892;&#35299;&#37322;<\/p><p>&#22312;Laravel&#20013;&#23454;&#29616;GraphQL&#30340;&#27493;&#39588;&#22914;&#19979;&#65306;\n\n&#23433;&#35013;&#21644;&#37197;&#32622;GraphQL&#26694;&#26550;&#65306;\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23433;&#35013;&#19968;&#20010;GraphQL&#26694;&#26550;&#65292;&#20363;&#22914;GuzzleHttp\/GraphQL&#25110;Grapher&#12290;\n\n&#21019;&#24314;GraphQL&#26381;&#21153;&#22120;&#65306;\n&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#31867;&#65292;&#32487;&#25215;&#33258;AppHttpControllersController&#65292;&#24182;&#20351;&#29992;GraphQL::schema()&#26041;&#27861;&#26469;&#23450;&#20041;&#20320;&#30340;GraphQL schema&#12290;\n\n&#21019;&#24314;GraphQL&#23458;&#25143;&#31471;&#65306;\n&#20320;&#21487;&#20197;&#20351;&#29992;Curl&#12289;PsrHttpClient&#25110;&#20854;&#20182;HTTP&#23458;&#25143;&#31471;&#24211;&#26469;&#21457;&#36865;GraphQL&#35831;&#27714;&#21040;&#20320;&#30340;&#26381;&#21153;&#22120;&#12290;\n\n&#20351;&#29992;GraphQL&#20013;&#38388;&#20214;&#65306;\n&#22914;&#26524;&#20320;&#38656;&#35201;&#22788;&#29702;&#22797;&#26434;&#30340;&#19994;&#21153;&#36923;&#36753;&#25110;&#32773;&#25968;&#25454;&#39564;&#35777;&#65292;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992;GraphQL&#20013;&#38388;&#20214;&#12290;\n\n&#37197;&#32622;&#36335;&#30001;&#65306;\n&#20320;&#38656;&#35201;&#20026;&#20320;&#30340;GraphQL API&#35774;&#32622;&#36335;&#30001;&#65292;&#20197;&#20415;&#23427;&#20204;&#21487;&#20197;&#22312;&#24212;&#29992;&#31243;&#24207;&#20013;&#34987;&#35775;&#38382;&#12290;\n\n&#36816;&#34892;&#20320;&#30340;&#24212;&#29992;&#24182;&#27979;&#35797;GraphQL&#65306;\n&#26368;&#21518;&#65292;&#36816;&#34892;&#20320;&#30340;Laravel&#24212;&#29992;&#65292;&#28982;&#21518;&#20351;&#29992;GraphQL Playground&#65288;&#20363;&#22914;GraphQLPlayground&#65289;&#26469;&#27979;&#35797;&#20320;&#30340;API&#12290;\n\n&#36825;&#20123;&#26159;&#22522;&#26412;&#30340;&#25351;&#23548;&#21407;&#21017;&#65292;&#20855;&#20307;&#30340;&#23454;&#29616;&#32454;&#33410;&#21487;&#33021;&#20250;&#26681;&#25454;&#20320;&#30340;&#38656;&#27714;&#21644;&#20351;&#29992;&#30340;&#29305;&#23450;&#24037;&#20855;&#32780;&#26377;&#25152;&#19981;&#21516;&#12290;<\/p><p>&#22788;&#29702;CORS&#22312;Laravel&#65306;&#19968;&#20010;&#23454;&#29992;&#25351;&#21335;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#24744;&#24050;&#32463;&#30475;&#21040;&#22914;&#20309;&#20351;&#29992;Laravel&#21019;&#24314;&#19968;&#20010;RESTful API&#32780;&#26080;&#38656;&#35270;&#22270;&#12290;&#25105;&#20204;&#20174;&#21021;&#22987;&#35774;&#32622;&#12289;&#21019;&#24314;&#36335;&#30001;&#21040;&#23433;&#20840;&#24615;&#21644;&#27979;&#35797;API&#30340;&#36807;&#31243;&#12290;&#36825;&#24212;&#35813;&#20026;&#22312;Laravel&#20013;&#26500;&#24314;&#21644;&#25193;&#23637;API&#25552;&#20379;&#22362;&#23454;&#30340;&#22522;&#30784;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#35201;&#22312;Laravel&#20013;&#21019;&#24314;&#19981;&#20351;&#29992;&#35270;&#22270;&#30340;REST API&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#23450;&#20041;&#25511;&#21046;&#22120;&#65288;Controller&#65289;&#26469;&#23454;&#29616;&#36825;&#20010;&#30446;&#26631;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#21019;&#24314;&#36825;&#26679;&#19968;&#20010;API&#30340;&#22522;&#26412;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102;Laravel&#65292;&#24182;&#19988;&#22312;&#20320;&#30340;&#39033;&#30446;&#20013;&#35774;&#32622;&#22909;&#29615;&#22659;&#12290;<\/p>\n<\/li>\n<li>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#12290;&#20363;&#22914;&#65292;&#25105;&#20204;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;<code>ApiControllersExampleController.php<\/code>&#30340;&#25991;&#20214;&#12290;&#22312;&#36825;&#20010;&#25511;&#21046;&#22120;&#20013;&#65292;&#25105;&#20204;&#23558;&#23450;&#20041;&#19968;&#20010;&#26041;&#27861;&#26469;&#22788;&#29702;GET&#35831;&#27714;&#12290;<\/p>\n<\/li>\n<li>\n<p>&#22312;<code>example_controller.php<\/code>&#25991;&#20214;&#20013;&#65292;&#25105;&#20204;&#23450;&#20041;&#20102;&#19968;&#20010;&#26041;&#27861;<code>getSomething()<\/code>&#12290;&#36825;&#20010;&#26041;&#27861;&#23558;&#36820;&#22238;&#19968;&#20123;&#25968;&#25454;&#12290;<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace ApiControllers;\n\nuse IlluminateHttpRequest;\nuse AppModelsUser;\n\nclass ExampleController extends Controller\n{\n    public function getSomething(Request $request)\n    {\n        \/\/ &#33719;&#21462;&#29992;&#25143;&#21015;&#34920;\n        $users = User::all();\n\n        return response()-&gt;json($users);\n    }\n}<\/code><\/pre>\n<ol start=\"4\">\n<li>&#29616;&#22312;&#65292;&#20320;&#38656;&#35201;&#20026;&#20320;&#30340;API&#32534;&#20889;&#30456;&#24212;&#30340;&#36335;&#30001;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#28155;&#21152;&#19968;&#20010;&#26032;&#30340;&#36335;&#30001;&#21040;&#20320;&#30340;<code>routes\/web.php<\/code>&#25991;&#20214;&#26469;&#23436;&#25104;&#12290;&#20551;&#35774;&#20320;&#24819;&#33719;&#21462;&#25152;&#26377;&#29992;&#25143;&#30340;ID&#21644;&#21517;&#23383;&#65292;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">Route::get('\/api\/users', 'ApiControllersExampleController@getSomething');<\/code><\/pre>\n<ol start=\"5\">\n<li>\n<p>&#26368;&#21518;&#65292;&#20320;&#38656;&#35201;&#36816;&#34892;&#20320;&#30340;&#24212;&#29992;&#24182;&#27979;&#35797;API&#26159;&#21542;&#27491;&#24120;&#24037;&#20316;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#35775;&#38382;<a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cDovL2xvY2FsaG9zdDo4MDAwL2FwaS91c2VycyYjMzY4Mjc7JiMzNDg5MjsmIzI3OTc5OyYjMzU3OTc7JiMwMzg7IzEyMjkw\" rel=\"noopener noreferrer nofollow\" rel=\"nofollow\">http:\/\/localhost:8000\/api\/users&#36827;&#34892;&#27979;&#35797;&#038;#12290<\/a>;<\/p>\n<\/li>\n<li>\n<p>&#22914;&#26524;&#19968;&#20999;&#37117;&#25353;&#39044;&#26399;&#24037;&#20316;&#65292;&#37027;&#20040;&#20320;&#23601;&#25104;&#21151;&#22320;&#21019;&#24314;&#20102;&#19968;&#20010;&#19981;&#20351;&#29992;&#35270;&#22270;&#30340;REST API&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#35831;&#27880;&#24847;&#65292;&#34429;&#28982;&#25105;&#25552;&#20379;&#20102;&#19968;&#20010;&#22522;&#26412;&#30340;&#20363;&#23376;&#65292;&#20294;&#22312;&#23454;&#38469;&#24212;&#29992;&#20013;&#65292;&#20320;&#21487;&#33021;&#38656;&#35201;&#26681;&#25454;&#20320;&#30340;&#38656;&#27714;&#28155;&#21152;&#26356;&#22810;&#30340;&#21151;&#33021;&#21644;&#39564;&#35777;&#26426;&#21046;&#12290;&#27492;&#22806;&#65292;Laravel&#36824;&#25552;&#20379;&#20102;&#35768;&#22810;&#20854;&#20182;&#30340;&#21151;&#33021;&#65292;&#22914;&#65306;HTTP&#29366;&#24577;&#30721;&#12289;&#38169;&#35823;&#22788;&#29702;&#31561;&#65292;&#36825;&#20123;&#37117;&#21487;&#20197;&#24110;&#21161;&#20320;&#26500;&#24314;&#26356;&#24378;&#22823;&#30340;API&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#21019;&#24314;&#19981;&#20351;&#29992;&#35270;&#22270;&#30340; REST API &#36890;&#24120;&#28041;&#21450;&#038;..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-1025","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1025"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1025"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1025"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}