{"id":1174,"date":"2025-01-22T01:01:11","date_gmt":"2025-01-21T17:01:11","guid":{"rendered":"https:\/\/www.laixuexila.com\/?p=1174"},"modified":"2025-01-24T00:12:02","modified_gmt":"2025-01-23T16:12:02","slug":"%e5%ae%9e%e6%88%98%e6%a1%88%e4%be%8b%ef%bc%9a%e4%bd%bf%e7%94%a8-thinkphp-%e5%bc%80%e5%8f%91%e5%8d%9a%e5%ae%a2%e4%b8%8e%e7%94%b5%e5%95%86%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"https:\/\/www.laixuexila.com\/index.php\/2025\/01\/22\/%e5%ae%9e%e6%88%98%e6%a1%88%e4%be%8b%ef%bc%9a%e4%bd%bf%e7%94%a8-thinkphp-%e5%bc%80%e5%8f%91%e5%8d%9a%e5%ae%a2%e4%b8%8e%e7%94%b5%e5%95%86%e7%b3%bb%e7%bb%9f\/","title":{"rendered":"\u5b9e\u6218\u6848\u4f8b\uff1a\u4f7f\u7528 ThinkPHP \u5f00\u53d1\u535a\u5ba2\u4e0e\u7535\u5546\u7cfb\u7edf"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u672c\u6559\u7a0b\u901a\u8fc7\u5b9e\u6218\u6848\u4f8b\uff0c\u8be6\u7ec6\u8bb2\u89e3\u5982\u4f55\u4f7f\u7528 <a href=\"https:\/\/www.laixuexila.com\/index.php\/2024\/12\/15\/thinkphp\u5168\u666f\u4ecb\u7ecd\uff1a\u4ece\u57fa\u7840\u5230\u8fdb\u9636\u7684\u5168\u9762\u89e3\u6790\/\">ThinkPHP <\/a>\u5f00\u53d1\u535a\u5ba2\u4e0e\u7535\u5546\u7cfb\u7edf\u3002\u60a8\u5c06\u5b66\u4e60\u535a\u5ba2\u7cfb\u7edf\u7684\u7528\u6237\u6ce8\u518c\u3001\u6587\u7ae0\u53d1\u5e03\u3001\u8bc4\u8bba\u4e0e\u70b9\u8d5e\u529f\u80fd\u7684\u5b9e\u73b0\uff0c\u4ee5\u53ca\u7535\u5546\u7cfb\u7edf\u7684\u5546\u54c1\u5c55\u793a\u3001\u8d2d\u7269\u8f66\u3001\u8ba2\u5355\u7ba1\u7406\u548c\u652f\u4ed8\u529f\u80fd\u3002\u540c\u65f6\uff0c\u672c\u6848\u4f8b\u6db5\u76d6\u6570\u636e\u5e93\u8bbe\u8ba1\u4e0e\u4f18\u5316\u3001RESTful API \u5f00\u53d1\u3001\u524d\u540e\u7aef\u63a5\u53e3\u5bf9\u63a5\u53ca\u89d2\u8272\u4e0e\u6743\u9650\u7ba1\u7406\u7b49\u5185\u5bb9\uff0c\u5e2e\u52a9\u60a8\u6df1\u5165\u7406\u89e3 ThinkPHP \u5728\u5b9e\u9645\u9879\u76ee\u4e2d\u7684\u5e94\u7528\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1. \u642d\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u535a\u5ba2\u7cfb\u7edf<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>\u529f\u80fd\u9700\u6c42<\/strong><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7528\u6237\u6ce8\u518c\u3001\u767b\u5f55\u3001\u53d1\u5e03\u6587\u7ae0\u3001\u8bc4\u8bba\u3001\u70b9\u8d5e\u7b49\u57fa\u672c\u529f\u80fd<\/li>\n\n\n\n<li>\u5b9e\u73b0\u7528\u6237\u6743\u9650\u63a7\u5236\u548c\u89d2\u8272\u7ba1\u7406<\/li>\n\n\n\n<li>\u6587\u7ae0\u641c\u7d22\u4e0e\u6807\u7b7e\u529f\u80fd<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>\u9879\u76ee\u7ed3\u6784<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>\u251c\u2500\u2500 application\n\u2502   \u251c\u2500\u2500 admin        # \u540e\u53f0\u7ba1\u7406\u6a21\u5757\n\u2502   \u251c\u2500\u2500 index        # \u524d\u7aef\u5c55\u793a\u6a21\u5757\n\u2502   \u251c\u2500\u2500 common       # \u516c\u5171\u6a21\u5757\n\u251c\u2500\u2500 config           # \u914d\u7f6e\u6587\u4ef6\n\u251c\u2500\u2500 public           # \u524d\u7aef\u5165\u53e3\u6587\u4ef6\n\u2514\u2500\u2500 runtime          # \u7f13\u5b58\u548c\u65e5\u5fd7\u76ee\u5f55<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.1 \u7528\u6237\u6ce8\u518c\u4e0e\u767b\u5f55<\/strong><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6570\u636e\u5e93\u8bbe\u8ba1<\/strong>\uff1a\u9996\u5148\u8bbe\u8ba1\u7528\u6237\u8868\uff08<code>user<\/code> \u8868\uff09\u5b58\u50a8\u7528\u6237\u4fe1\u606f\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  CREATE TABLE user (\n      id INT AUTO_INCREMENT PRIMARY KEY,\n      username VARCHAR(50) NOT NULL,\n      password VARCHAR(255) NOT NULL,\n      email VARCHAR(100) NOT NULL,\n      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n  );<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u7528\u6237\u6ce8\u518c<\/strong>\uff1a\u7528\u6237\u63d0\u4ea4\u6ce8\u518c\u8868\u5355\uff0c\u7cfb\u7edf\u5bf9\u7528\u6237\u8f93\u5165\u7684\u4fe1\u606f\u8fdb\u884c\u9a8c\u8bc1\uff0c\u6210\u529f\u540e\u5c06\u7528\u6237\u4fe1\u606f\u5b58\u5165\u6570\u636e\u5e93\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  public function register() {\n      $data = input('post.');\n      $validate = \\think\\facade\\Validate::make(&#91;\n          'username' =&gt; 'require|max:25',\n          'password' =&gt; 'require|min:6',\n          'email' =&gt; 'email',\n      ]);\n\n      if (!$validate-&gt;check($data)) {\n          return json(&#91;'error' =&gt; $validate-&gt;getError()]);\n      }\n\n      \/\/ \u52a0\u5bc6\u5bc6\u7801\n      $data&#91;'password'] = password_hash($data&#91;'password'], PASSWORD_BCRYPT);\n\n      $user = new \\app\\model\\User();\n      $user-&gt;save($data);\n\n      return json(&#91;'message' =&gt; '\u6ce8\u518c\u6210\u529f']);\n  }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u7528\u6237\u767b\u5f55<\/strong>\uff1a\u7528\u6237\u767b\u5f55\u65f6\uff0c\u901a\u8fc7\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801\u8fdb\u884c\u9a8c\u8bc1\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  public function login() {\n      $data = input('post.');\n\n      \/\/ \u67e5\u627e\u7528\u6237\n      $user = \\app\\model\\User::where('username', $data&#91;'username'])-&gt;find();\n      if (!$user || !password_verify($data&#91;'password'], $user-&gt;password)) {\n          return json(&#91;'error' =&gt; '\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef']);\n      }\n\n      \/\/ \u767b\u5f55\u6210\u529f\uff0c\u751f\u6210 Token\n      $token = jwt_encode($user-&gt;id); \/\/ \u4f7f\u7528 JWT \u751f\u6210\u4ee4\u724c\n      return json(&#91;'token' =&gt; $token]);\n  }<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.2 \u53d1\u5e03\u6587\u7ae0\u4e0e\u8bc4\u8bba<\/strong><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6587\u7ae0\u53d1\u5e03<\/strong>\uff1a\u6587\u7ae0\u8868\uff08<code>posts<\/code>\uff09\u5b58\u50a8\u6587\u7ae0\u5185\u5bb9\uff0c\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u540e\u53f0\u53d1\u5e03\u6587\u7ae0\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  CREATE TABLE posts (\n      id INT AUTO_INCREMENT PRIMARY KEY,\n      title VARCHAR(255) NOT NULL,\n      content TEXT NOT NULL,\n      user_id INT NOT NULL,\n      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n  );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53d1\u5e03\u6587\u7ae0\u63a7\u5236\u5668\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  public function publish() {\n      $data = input('post.');\n\n      $validate = \\think\\facade\\Validate::make(&#91;\n          'title' =&gt; 'require|max:255',\n          'content' =&gt; 'require',\n      ]);\n      if (!$validate-&gt;check($data)) {\n          return json(&#91;'error' =&gt; $validate-&gt;getError()]);\n      }\n\n      $data&#91;'user_id'] = session('user_id'); \/\/ \u5f53\u524d\u767b\u5f55\u7528\u6237ID\n      $post = new \\app\\model\\Post();\n      $post-&gt;save($data);\n\n      return json(&#91;'message' =&gt; '\u6587\u7ae0\u53d1\u5e03\u6210\u529f']);\n  }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u8bc4\u8bba\u529f\u80fd<\/strong>\uff1a\u8bc4\u8bba\u8868\uff08<code>comments<\/code>\uff09\u5b58\u50a8\u8bc4\u8bba\u5185\u5bb9\uff0c\u5173\u8054\u7528\u6237\u548c\u6587\u7ae0\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  CREATE TABLE comments (\n      id INT AUTO_INCREMENT PRIMARY KEY,\n      post_id INT NOT NULL,\n      user_id INT NOT NULL,\n      content TEXT NOT NULL,\n      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n  );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53d1\u5e03\u8bc4\u8bba\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  public function comment() {\n      $data = input('post.');\n\n      $validate = \\think\\facade\\Validate::make(&#91;\n          'post_id' =&gt; 'require|integer',\n          'content' =&gt; 'require',\n      ]);\n\n      if (!$validate-&gt;check($data)) {\n          return json(&#91;'error' =&gt; $validate-&gt;getError()]);\n      }\n\n      $data&#91;'user_id'] = session('user_id'); \/\/ \u5f53\u524d\u767b\u5f55\u7528\u6237ID\n      $comment = new \\app\\model\\Comment();\n      $comment-&gt;save($data);\n\n      return json(&#91;'message' =&gt; '\u8bc4\u8bba\u6210\u529f']);\n  }<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.3 \u70b9\u8d5e\u529f\u80fd<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u6587\u7ae0\u70b9\u8d5e\u8868\uff08<code>likes<\/code>\uff09\u7528\u4e8e\u5b58\u50a8\u7528\u6237\u5bf9\u6587\u7ae0\u7684\u70b9\u8d5e\u884c\u4e3a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE likes (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    post_id INT NOT NULL,\n    user_id INT NOT NULL,\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u70b9\u8d5e\u64cd\u4f5c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public function like() {\n    $data = input('post.');\n\n    $like = \\app\\model\\Like::where('post_id', $data&#91;'post_id'])-&gt;where('user_id', session('user_id'))-&gt;find();\n    if ($like) {\n        return json(&#91;'message' =&gt; '\u5df2\u7ecf\u70b9\u8d5e\u8fc7']);\n    }\n\n    $like = new \\app\\model\\Like();\n    $like-&gt;save($data);\n\n    return json(&#91;'message' =&gt; '\u70b9\u8d5e\u6210\u529f']);\n}<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.4 \u7528\u6237\u6743\u9650\u63a7\u5236\u548c\u89d2\u8272\u7ba1\u7406<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u89d2\u8272\u7ba1\u7406\u8868\uff08<code>roles<\/code>\uff09\u5b58\u50a8\u4e0d\u540c\u7684\u7528\u6237\u89d2\u8272\uff0c\u6743\u9650\u8868\uff08<code>permissions<\/code>\uff09\u5b58\u50a8\u89d2\u8272\u5bf9\u5e94\u7684\u6743\u9650\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE roles (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    name VARCHAR(50) NOT NULL\n);\n\nCREATE TABLE permissions (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    role_id INT NOT NULL,\n    permission VARCHAR(50) NOT NULL\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7\u6743\u9650\u63a7\u5236\u5b9e\u73b0\u4e0d\u540c\u89d2\u8272\u7684\u8bbf\u95ee\u63a7\u5236\uff08\u5982\u7ba1\u7406\u5458\u53ef\u4ee5\u7ba1\u7406\u6240\u6709\u6587\u7ae0\uff0c\u666e\u901a\u7528\u6237\u53ea\u80fd\u53d1\u5e03\u548c\u8bc4\u8bba\u6587\u7ae0\uff09\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1.5 \u6587\u7ae0\u641c\u7d22\u4e0e\u6807\u7b7e\u529f\u80fd<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u6587\u7ae0\u6dfb\u52a0\u6807\u7b7e\uff0c\u901a\u8fc7\u5173\u8054\u8868\uff08<code>post_tags<\/code>\uff09\u5b58\u50a8\u6587\u7ae0\u4e0e\u6807\u7b7e\u7684\u5173\u7cfb\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE tags (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    name VARCHAR(50) NOT NULL\n);\n\nCREATE TABLE post_tags (\n    post_id INT NOT NULL,\n    tag_id INT NOT NULL\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6587\u7ae0\u641c\u7d22\u529f\u80fd\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public function search() {\n    $keyword = input('get.keyword');\n    $posts = \\app\\model\\Post::where('title', 'like', \"%$keyword%\")-&gt;select();\n    return json(&#91;'posts' =&gt; $posts]);\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>2. \u5b9e\u73b0\u4e00\u4e2a\u7535\u5546\u7cfb\u7edf<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>\u529f\u80fd\u9700\u6c42<\/strong><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5546\u54c1\u5c55\u793a\u3001\u5206\u7c7b\u3001\u8d2d\u7269\u8f66\u3001\u8ba2\u5355\u3001\u652f\u4ed8\u7b49\u529f\u80fd<\/li>\n\n\n\n<li>\u6570\u636e\u5e93\u5b58\u50a8\u8bbe\u8ba1\u4e0e\u4f18\u5316<\/li>\n\n\n\n<li>API \u548c\u524d\u7aef\u63a5\u53e3\u5bf9\u63a5<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>\u9879\u76ee\u7ed3\u6784<\/strong><\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>\u251c\u2500\u2500 application\n\u2502   \u251c\u2500\u2500 admin        # \u540e\u53f0\u7ba1\u7406\u6a21\u5757\n\u2502   \u251c\u2500\u2500 index        # \u524d\u7aef\u5c55\u793a\u6a21\u5757\n\u2502   \u251c\u2500\u2500 common       # \u516c\u5171\u6a21\u5757\n\u251c\u2500\u2500 config           # \u914d\u7f6e\u6587\u4ef6\n\u251c\u2500\u2500 public           # \u524d\u7aef\u5165\u53e3\u6587\u4ef6\n\u2514\u2500\u2500 runtime          # \u7f13\u5b58\u548c\u65e5\u5fd7\u76ee\u5f55<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.1 \u5546\u54c1\u5c55\u793a\u4e0e\u5206\u7c7b<\/strong><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6570\u636e\u5e93\u8bbe\u8ba1<\/strong>\uff1a\u8bbe\u8ba1\u5546\u54c1\u8868\uff08<code>products<\/code>\uff09\u548c\u5206\u7c7b\u8868\uff08<code>categories<\/code>\uff09\u5b58\u50a8\u5546\u54c1\u4e0e\u5206\u7c7b\u4fe1\u606f\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  CREATE TABLE categories (\n      id INT AUTO_INCREMENT PRIMARY KEY,\n      name VARCHAR(100) NOT NULL\n  );\n\n  CREATE TABLE products (\n      id INT AUTO_INCREMENT PRIMARY KEY,\n      name VARCHAR(255) NOT NULL,\n      price DECIMAL(10, 2) NOT NULL,\n      category_id INT NOT NULL,\n      description TEXT,\n      image VARCHAR(255)\n  );<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5546\u54c1\u5c55\u793a<\/strong>\uff1a\u524d\u7aef\u53ef\u4ee5\u901a\u8fc7 API \u83b7\u53d6\u5546\u54c1\u5217\u8868\uff0c\u5e76\u6309\u5206\u7c7b\u8fdb\u884c\u5c55\u793a\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  public function getProducts() {\n      $category_id = input('get.category_id', 0);\n      $products = \\app\\model\\Product::where('category_id', $category_id)-&gt;select();\n      return json(&#91;'products' =&gt; $products]);\n  }<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.2 \u8d2d\u7269\u8f66\u529f\u80fd<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u8ba1\u8d2d\u7269\u8f66\u8868\uff08<code>cart<\/code>\uff09\u5b58\u50a8\u7528\u6237\u7684\u8d2d\u7269\u8f66\u5546\u54c1\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE cart (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    user_id INT NOT NULL,\n    product_id INT NOT NULL,\n    quantity INT NOT NULL\n);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6dfb\u52a0\u5230\u8d2d\u7269\u8f66<\/strong>\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  public function addToCart() {\n      $data = input('post.');\n      $cart = new \\app\\model\\Cart();\n      $cart-&gt;save($data);\n      return json(&#91;'message' =&gt; '\u6dfb\u52a0\u5230\u8d2d\u7269\u8f66\u6210\u529f']);\n  }<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.3 \u8ba2\u5355\u4e0e\u652f\u4ed8\u529f\u80fd<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u8ba1\u8ba2\u5355\u8868\uff08<code>orders<\/code>\uff09\u548c\u652f\u4ed8\u8868\uff08<code>payments<\/code>\uff09\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE orders (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    user_id INT NOT NULL,\n    total_price DECIMAL(10, 2) NOT NULL,\n    status ENUM('pending', 'paid', 'shipped', 'completed') NOT NULL,\n    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\nCREATE TABLE\n\n payments (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    order_id INT NOT NULL,\n    amount DECIMAL(10, 2) NOT NULL,\n    payment_method VARCHAR(50) NOT NULL,\n    payment_status ENUM('pending', 'completed', 'failed') NOT NULL\n);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u521b\u5efa\u8ba2\u5355<\/strong>\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  public function createOrder() {\n      $user_id = session('user_id');\n      $total_price = input('post.total_price');\n      $order = new \\app\\model\\Order();\n      $order-&gt;save(&#91;'user_id' =&gt; $user_id, 'total_price' =&gt; $total_price, 'status' =&gt; 'pending']);\n      return json(&#91;'message' =&gt; '\u8ba2\u5355\u521b\u5efa\u6210\u529f']);\n  }<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>2.4 API \u548c\u524d\u7aef\u63a5\u53e3\u5bf9\u63a5<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u7535\u5546\u7cfb\u7edf\u4e2d\uff0c\u524d\u7aef\u4e0e\u540e\u7aef\u7684\u63a5\u53e3\u5bf9\u63a5\u662f\u901a\u8fc7 API \u6765\u5b9e\u73b0\u7684\u3002\u524d\u7aef\u901a\u8fc7 AJAX \u8bf7\u6c42\u8c03\u7528 API\uff0c\u83b7\u53d6\u5546\u54c1\u3001\u8ba2\u5355\u7b49\u4fe1\u606f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u524d\u7aef\u793a\u4f8b\uff08\u901a\u8fc7 AJAX \u83b7\u53d6\u5546\u54c1\u5217\u8868\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$.ajax({\n    url: '\/api\/products',\n    type: 'GET',\n    data: { category_id: 1 },\n    success: function(response) {\n        console.log(response.products);\n    }\n});<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7\u8fd9\u4e9b\u5b9e\u6218\u9879\u76ee\uff0c\u60a8\u53ef\u4ee5\u5168\u9762\u4e86\u89e3 ThinkPHP \u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u7684\u4f7f\u7528\u65b9\u5f0f\uff0c\u638c\u63e1\u4ece\u57fa\u7840\u5230\u9ad8\u7ea7\u7684\u5f00\u53d1\u6280\u5de7\uff0c\u5feb\u901f\u642d\u5efa\u548c\u7ef4\u62a4 Web \u5e94\u7528\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6559\u7a0b\u901a\u8fc7\u5b9e\u6218\u6848\u4f8b\uff0c\u8be6\u7ec6\u8bb2\u89e3\u5982\u4f55\u4f7f\u7528 ThinkPHP \u5f00\u53d1\u535a\u5ba2\u4e0e\u7535\u5546\u7cfb\u7edf\u3002\u60a8\u5c06\u5b66\u4e60\u535a\u5ba2\u7cfb\u7edf\u7684\u7528\u6237\u6ce8\u518c\u3001\u6587\u7ae0\u53d1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[67],"tags":[],"class_list":["post-1174","post","type-post","status-publish","format-standard","hentry","category-thinkphp"],"_links":{"self":[{"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/posts\/1174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/comments?post=1174"}],"version-history":[{"count":3,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/posts\/1174\/revisions"}],"predecessor-version":[{"id":1208,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/posts\/1174\/revisions\/1208"}],"wp:attachment":[{"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/media?parent=1174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/categories?post=1174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.laixuexila.com\/index.php\/wp-json\/wp\/v2\/tags?post=1174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}