{"id":141,"date":"2026-06-16T14:40:49","date_gmt":"2026-06-16T06:40:49","guid":{"rendered":"https:\/\/www.52runoob.com\/?p=141"},"modified":"2026-06-16T14:40:49","modified_gmt":"2026-06-16T06:40:49","slug":"fastapi-%e8%b7%af%e5%be%84%e5%8f%82%e6%95%b0-2","status":"publish","type":"post","link":"https:\/\/www.52runoob.com\/index.php\/2026\/06\/16\/fastapi-%e8%b7%af%e5%be%84%e5%8f%82%e6%95%b0-2\/","title":{"rendered":"FastAPI \u8def\u5f84\u53c2\u6570"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5728 FastAPI \u4e2d\uff0c<strong>\u8def\u5f84\u53c2\u6570\uff08Path Parameters\uff09<\/strong> \u662f URL \u8def\u5f84\u4e2d\u52a8\u6001\u53d8\u5316\u7684\u90e8\u5206\u3002\u5b83\u4eec\u901a\u5e38\u7528\u4e8e\u6807\u8bc6\u7279\u5b9a\u7684\u8d44\u6e90\uff08\u4f8b\u5982\uff1a\u83b7\u53d6 ID \u4e3a 5 \u7684\u5546\u54c1 <code>\/items\/5<\/code>\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FastAPI \u5bf9\u8def\u5f84\u53c2\u6570\u7684\u5904\u7406\u975e\u5e38\u667a\u80fd\uff0c\u4e0d\u4ec5\u80fd\u81ea\u52a8\u63d0\u53d6\u6570\u636e\uff0c\u8fd8\u80fd<strong>\u81ea\u52a8\u8fdb\u884c\u7c7b\u578b\u8f6c\u6362\u548c\u9a8c\u8bc1<\/strong>\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u662f\u8def\u5f84\u53c2\u6570\u7684\u6838\u5fc3\u7528\u6cd5\u548c\u8fdb\u9636\u6280\u5de7\uff1a<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u57fa\u7840\u7528\u6cd5\uff1a\u58f0\u660e\u4e0e\u81ea\u52a8\u7c7b\u578b\u8f6c\u6362<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f60\u53ea\u9700\u8981\u5728\u8def\u5f84\u88c5\u9970\u5668\u4e2d\u4f7f\u7528 <code>{}<\/code> \u58f0\u660e\u53d8\u91cf\u540d\uff0c\u5e76\u5728\u51fd\u6570\u53c2\u6570\u4e2d\u58f0\u660e<strong>\u76f8\u540c\u7684\u53d8\u91cf\u540d<\/strong>\u548c<strong>Python \u7c7b\u578b<\/strong>\u3002FastAPI \u4f1a\u81ea\u52a8\u5c06 URL \u4e2d\u7684\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u4f60\u58f0\u660e\u7684\u7c7b\u578b\u3002<\/p>\n\n\n\n<div class=\"chp-code-block chp-theme-github-dark chp-wrap-on\" data-chp-language=\"plaintext\" data-chp-line-start=\"1\" data-chp-highlight=\"\"><div class=\"chp-toolbar\"><div class=\"chp-toolbar-left\"><span class=\"chp-dots\"><span><\/span><span><\/span><span><\/span><\/span><span class=\"chp-language-label\">\u7eaf\u6587\u672c<\/span><\/div><div class=\"chp-toolbar-right\"><button type=\"button\" class=\"chp-copy-btn\" aria-label=\"\u590d\u5236\u4ee3\u7801\"><svg class=\"chp-icon-copy\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\/><\/svg><svg class=\"chp-icon-check\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\" style=\"display:none;\"><path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/><\/svg><span class=\"chp-copy-text\">\u590d\u5236<\/span><\/button><\/div><\/div><div class=\"chp-code-wrapper\"><div class=\"chp-line-numbers\" aria-hidden=\"true\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><span>6<\/span><span>7<\/span><span>8<\/span><span>9<\/span><span>10<\/span><\/div><pre class=\"chp-pre\" style=\"font-size:14px;\"><code class=\"language-plaintext\">from fastapi import FastAPI\n\napp = FastAPI()\n\n# URL: \/items\/42\n@app.get(&quot;\/items\/{item_id}&quot;)\nasync def read_item(item_id: int):\n    # FastAPI \u4f1a\u81ea\u52a8\u5c06 &quot;42&quot; \u8f6c\u6362\u4e3a\u6574\u6570 42\n    # \u5982\u679c\u4f20\u5165 &quot;\/items\/foo&quot;\uff0cFastAPI \u4f1a\u81ea\u52a8\u8fd4\u56de\u6e05\u6670\u7684 422 \u9a8c\u8bc1\u9519\u8bef\n    return {&quot;item_id&quot;: item_id, &quot;type&quot;: type(item_id).__name__}<\/code><\/pre><\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u652f\u6301\u7684\u5e38\u89c1\u6570\u636e\u7c7b\u578b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u9664\u4e86 <code>str<\/code> \u548c <code>int<\/code>\uff0cFastAPI \u539f\u751f\u652f\u6301\u591a\u79cd\u7c7b\u578b\u7684\u81ea\u52a8\u89e3\u6790\uff1a<\/p>\n\n\n\n<div class=\"chp-code-block chp-theme-github-dark chp-wrap-on\" data-chp-language=\"plaintext\" data-chp-line-start=\"1\" data-chp-highlight=\"\"><div class=\"chp-toolbar\"><div class=\"chp-toolbar-left\"><span class=\"chp-dots\"><span><\/span><span><\/span><span><\/span><\/span><span class=\"chp-language-label\">\u7eaf\u6587\u672c<\/span><\/div><div class=\"chp-toolbar-right\"><button type=\"button\" class=\"chp-copy-btn\" aria-label=\"\u590d\u5236\u4ee3\u7801\"><svg class=\"chp-icon-copy\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\/><\/svg><svg class=\"chp-icon-check\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\" style=\"display:none;\"><path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/><\/svg><span class=\"chp-copy-text\">\u590d\u5236<\/span><\/button><\/div><\/div><div class=\"chp-code-wrapper\"><div class=\"chp-line-numbers\" aria-hidden=\"true\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><span>6<\/span><span>7<\/span><span>8<\/span><span>9<\/span><span>10<\/span><span>11<\/span><span>12<\/span><span>13<\/span><span>14<\/span><span>15<\/span><span>16<\/span><span>17<\/span><span>18<\/span><span>19<\/span><\/div><pre class=\"chp-pre\" style=\"font-size:14px;\"><code class=\"language-plaintext\">import uuid\nfrom fastapi import FastAPI\n\napp = FastAPI()\n\n# 1. \u6d6e\u70b9\u6570: \/floats\/3.14\n@app.get(&quot;\/floats\/{value}&quot;)\nasync def read_float(value: float):\n    return {&quot;value&quot;: value}\n\n# 2. \u5e03\u5c14\u503c: \/bools\/true \u6216 \/bools\/1 (\u4e0d\u533a\u5206\u5927\u5c0f\u5199)\n@app.get(&quot;\/bools\/{value}&quot;)\nasync def read_bool(value: bool):\n    return {&quot;value&quot;: value}\n\n# 3. UUID: \/uuids\/123e4567-e89b-12d3-a456-426614174000\n@app.get(&quot;\/uuids\/{value}&quot;)\nasync def read_uuid(value: uuid.UUID):\n    return {&quot;value&quot;: str(value)}<\/code><\/pre><\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u8def\u5f84\u53c2\u6570\u9a8c\u8bc1 (\u4f7f\u7528 <code>Path<\/code>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4f60\u60f3\u5bf9\u8def\u5f84\u53c2\u6570\u6dfb\u52a0\u989d\u5916\u7684\u9a8c\u8bc1\u89c4\u5219\uff08\u5982\u6700\u5c0f\u503c\u3001\u6700\u5927\u503c\u3001\u6b63\u5219\u8868\u8fbe\u5f0f\uff09\uff0c\u53ef\u4ee5\u4f7f\u7528 <code>fastapi.Path<\/code>\u3002<br><em>(\u63a8\u8350\u4f7f\u7528 <code>Annotated<\/code> \u8bed\u6cd5\uff0c\u5c06\u9a8c\u8bc1\u903b\u8f91\u4e0e\u7c7b\u578b\u63d0\u793a\u5206\u79bb)<\/em><\/p>\n\n\n\n<div class=\"chp-code-block chp-theme-github-dark chp-wrap-on\" data-chp-language=\"plaintext\" data-chp-line-start=\"1\" data-chp-highlight=\"\"><div class=\"chp-toolbar\"><div class=\"chp-toolbar-left\"><span class=\"chp-dots\"><span><\/span><span><\/span><span><\/span><\/span><span class=\"chp-language-label\">\u7eaf\u6587\u672c<\/span><\/div><div class=\"chp-toolbar-right\"><button type=\"button\" class=\"chp-copy-btn\" aria-label=\"\u590d\u5236\u4ee3\u7801\"><svg class=\"chp-icon-copy\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\/><\/svg><svg class=\"chp-icon-check\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\" style=\"display:none;\"><path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/><\/svg><span class=\"chp-copy-text\">\u590d\u5236<\/span><\/button><\/div><\/div><div class=\"chp-code-wrapper\"><div class=\"chp-line-numbers\" aria-hidden=\"true\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><span>6<\/span><span>7<\/span><span>8<\/span><span>9<\/span><span>10<\/span><span>11<\/span><span>12<\/span><span>13<\/span><span>14<\/span><span>15<\/span><span>16<\/span><span>17<\/span><span>18<\/span><\/div><pre class=\"chp-pre\" style=\"font-size:14px;\"><code class=\"language-plaintext\">from typing import Annotated\nfrom fastapi import FastAPI, Path\n\napp = FastAPI()\n\n@app.get(&quot;\/items\/{item_id}&quot;)\nasync def read_item(\n    item_id: Annotated[\n        int, \n        Path(\n            title=&quot;The ID of the item to get&quot;,\n            description=&quot;Item ID must be greater than 0&quot;,\n            ge=1,          # Greater than or equal to 1\n            le=1000        # Less than or equal to  it 1000\n        )\n    ]\n):\n    return {&quot;item_id&quot;: item_id}<\/code><\/pre><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u5982\u679c\u8bf7\u6c42 <code>\/items\/0<\/code> \u6216 <code>\/items\/2000<\/code>\uff0cFastAPI \u4f1a\u8fd4\u56de 422 \u9519\u8bef\uff0c\u5e76\u9644\u5e26\u4f60\u5728 <code>Path<\/code> \u4e2d\u5199\u7684\u63cf\u8ff0\u4fe1\u606f\u3002<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">4. \u9884\u5b9a\u4e49\u503c (\u4f7f\u7528 <code>Enum<\/code>)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4f60\u5e0c\u671b\u8def\u5f84\u53c2\u6570\u53ea\u80fd\u662f\u51e0\u4e2a\u7279\u5b9a\u7684\u503c\uff08\u4f8b\u5982\uff1a\u6a21\u578b\u540d\u79f0\u3001\u72b6\u6001\uff09\uff0c\u53ef\u4ee5\u4f7f\u7528 Python \u6807\u51c6\u7684 <code>Enum<\/code> \u7c7b\u3002\u8fd9\u4e0d\u4ec5\u9650\u5236\u4e86\u8f93\u5165\uff0c\u8fd8\u4f1a\u5728 Swagger UI (<code>\/docs<\/code>) \u4e2d\u751f\u6210\u4e0b\u62c9\u9009\u62e9\u6846\u3002<\/p>\n\n\n\n<div class=\"chp-code-block chp-theme-github-dark chp-wrap-on\" data-chp-language=\"plaintext\" data-chp-line-start=\"1\" data-chp-highlight=\"\"><div class=\"chp-toolbar\"><div class=\"chp-toolbar-left\"><span class=\"chp-dots\"><span><\/span><span><\/span><span><\/span><\/span><span class=\"chp-language-label\">\u7eaf\u6587\u672c<\/span><\/div><div class=\"chp-toolbar-right\"><button type=\"button\" class=\"chp-copy-btn\" aria-label=\"\u590d\u5236\u4ee3\u7801\"><svg class=\"chp-icon-copy\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\/><\/svg><svg class=\"chp-icon-check\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\" style=\"display:none;\"><path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/><\/svg><span class=\"chp-copy-text\">\u590d\u5236<\/span><\/button><\/div><\/div><div class=\"chp-code-wrapper\"><div class=\"chp-line-numbers\" aria-hidden=\"true\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><span>6<\/span><span>7<\/span><span>8<\/span><span>9<\/span><span>10<\/span><span>11<\/span><span>12<\/span><span>13<\/span><span>14<\/span><span>15<\/span><span>16<\/span><span>17<\/span><\/div><pre class=\"chp-pre\" style=\"font-size:14px;\"><code class=\"language-plaintext\">from enum import Enum\nfrom fastapi import FastAPI\n\nclass ModelName(str, Enum):\n    alexnet = &quot;alexnet&quot;\n    resnet = &quot;resnet&quot;\n    lenet = &quot;lenet&quot;\n\napp = FastAPI()\n\n@app.get(&quot;\/models\/{model_name}&quot;)\nasync def get_model(model_name: ModelName):\n    if model_name == ModelName.alexnet:\n        return {&quot;model_name&quot;: model_name, &quot;message&quot;: &quot;Deep Learning FTW!&quot;}\n\n    # \u53ef\u4ee5\u901a\u8fc7 .value \u83b7\u53d6\u5b57\u7b26\u4e32\u503c\n    return {&quot;model_name&quot;: model_name, &quot;message&quot;: &quot;Have some residuals&quot;}<\/code><\/pre><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u5982\u679c\u8bf7\u6c42 <code>\/models\/unknown<\/code>\uff0cFastAPI \u4f1a\u8fd4\u56de 422 \u9519\u8bef\uff0c\u63d0\u793a\u8be5\u503c\u4e0d\u5728\u5141\u8bb8\u7684\u679a\u4e3e\u5217\u8868\u4e2d\u3002<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">has a special meaning in URLs. By default, a path parameter will <strong>not<\/strong> match slashes <code>\/<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. \u5305\u542b\u8def\u5f84\u7684\u8def\u5f84\u53c2\u6570 (Path Converters)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4f60\u9700\u8981\u6355\u83b7\u5305\u542b\u659c\u6760\u7684\u8def\u5f84\uff08\u4f8b\u5982\uff1a\u6587\u4ef6\u8def\u5f84 <code>\/files\/users\/config.txt<\/code>\uff09\uff0c\u4f60\u9700\u8981\u4f7f\u7528\u7279\u6b8a\u7684\u8def\u5f84\u8f6c\u6362\u5668 <code>:path<\/code>\u3002<\/p>\n\n\n\n<div class=\"chp-code-block chp-theme-github-dark chp-wrap-on\" data-chp-language=\"plaintext\" data-chp-line-start=\"1\" data-chp-highlight=\"\"><div class=\"chp-toolbar\"><div class=\"chp-toolbar-left\"><span class=\"chp-dots\"><span><\/span><span><\/span><span><\/span><\/span><span class=\"chp-language-label\">\u7eaf\u6587\u672c<\/span><\/div><div class=\"chp-toolbar-right\"><button type=\"button\" class=\"chp-copy-btn\" aria-label=\"\u590d\u5236\u4ee3\u7801\"><svg class=\"chp-icon-copy\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\/><\/svg><svg class=\"chp-icon-check\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\" style=\"display:none;\"><path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/><\/svg><span class=\"chp-copy-text\">\u590d\u5236<\/span><\/button><\/div><\/div><div class=\"chp-code-wrapper\"><div class=\"chp-line-numbers\" aria-hidden=\"true\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><span>6<\/span><span>7<\/span><span>8<\/span><span>9<\/span><span>10<\/span><span>11<\/span><\/div><pre class=\"chp-pre\" style=\"font-size:14px;\"><code class=\"language-plaintext\">from typing import Annotated\nfrom fastapi import FastAPI, Path\n\napp = FastAPI()\n\n# \u6ce8\u610f {file_path:path} \u4e2d\u7684 :path\n@app.get(&quot;\/files\/{file_path:path}&quot;)\nasync def read_file(\n    file_path: Annotated[str, Path(description=&quot;The full file path&quot;)]\n):\n    return {&quot;file_path&quot;: file_path}<\/code><\/pre><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u8bf7\u6c42 <code>\/files\/users\/config.txt<\/code> \u65f6\uff0c<code>file_path<\/code> \u7684\u503c\u5c06\u662f <code>\"users\/config.txt\"<\/code>\u3002<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">6. \u26a0\ufe0f \u8def\u5f84\u58f0\u660e\u987a\u5e8f (\u91cd\u8981\u9677\u9631)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">FastAPI \u662f\u6309\u7167\u4ee3\u7801\u4e2d<strong>\u4ece\u4e0a\u5230\u4e0b<\/strong>\u7684\u987a\u5e8f\u6765\u5339\u914d\u8def\u5f84\u7684\u3002\u5982\u679c\u4f60\u6709\u4e00\u4e2a\u52a8\u6001\u8def\u5f84\u548c\u4e00\u4e2a\u56fa\u5b9a\u8def\u5f84\uff0c<strong>\u5fc5\u987b\u5c06\u56fa\u5b9a\u8def\u5f84\u653e\u5728\u524d\u9762<\/strong>\u3002<\/p>\n\n\n\n<div class=\"chp-code-block chp-theme-github-dark chp-wrap-on\" data-chp-language=\"plaintext\" data-chp-line-start=\"1\" data-chp-highlight=\"\"><div class=\"chp-toolbar\"><div class=\"chp-toolbar-left\"><span class=\"chp-dots\"><span><\/span><span><\/span><span><\/span><\/span><span class=\"chp-language-label\">\u7eaf\u6587\u672c<\/span><\/div><div class=\"chp-toolbar-right\"><button type=\"button\" class=\"chp-copy-btn\" aria-label=\"\u590d\u5236\u4ee3\u7801\"><svg class=\"chp-icon-copy\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\/><\/svg><svg class=\"chp-icon-check\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\" style=\"display:none;\"><path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/><\/svg><span class=\"chp-copy-text\">\u590d\u5236<\/span><\/button><\/div><\/div><div class=\"chp-code-wrapper\"><div class=\"chp-line-numbers\" aria-hidden=\"true\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><span>6<\/span><span>7<\/span><span>8<\/span><span>9<\/span><span>10<\/span><span>11<\/span><span>12<\/span><span>13<\/span><\/div><pre class=\"chp-pre\" style=\"font-size:14px;\"><code class=\"language-plaintext\">from fastapi import FastAPI\n\napp = FastAPI()\n\n# \u2705 \u6b63\u786e\uff1a\u56fa\u5b9a\u8def\u5f84\u5728\u524d\n@app.get(&quot;\/users\/me&quot;)\nasync def read_user_me():\n    return {&quot;user_id&quot;: &quot;the current user&quot;}\n\n# \u52a8\u6001\u8def\u5f84\u5728\u540e\n@app.get(&quot;\/users\/{user_id}&quot;)\nasync def read_user(user_id: str):\n    return {&quot;user_id&quot;: user_id}<\/code><\/pre><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u5982\u679c\u53cd\u8fc7\u6765\u5199\uff0c\u8bf7\u6c42 <code>\/users\/me<\/code> \u65f6\uff0cFastAPI \u4f1a\u5339\u914d\u5230 <code>\/users\/{user_id}<\/code>\uff0c\u5e76\u5c06 <code>user_id<\/code> \u89e3\u6790\u4e3a\u5b57\u7b26\u4e32 <code>\"me\"<\/code>\uff0c\u5bfc\u81f4\u903b\u8f91\u9519\u8bef\u3002<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">7. \u591a\u4e2a\u8def\u5f84\u53c2\u6570<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f60\u53ef\u4ee5\u540c\u65f6\u4f7f\u7528\u591a\u4e2a\u8def\u5f84\u53c2\u6570\uff0cFastAPI \u4f1a\u6309\u540d\u79f0\u4e00\u4e00\u5bf9\u5e94\u3002<\/p>\n\n\n\n<div class=\"chp-code-block chp-theme-github-dark chp-wrap-on\" data-chp-language=\"plaintext\" data-chp-line-start=\"1\" data-chp-highlight=\"\"><div class=\"chp-toolbar\"><div class=\"chp-toolbar-left\"><span class=\"chp-dots\"><span><\/span><span><\/span><span><\/span><\/span><span class=\"chp-language-label\">\u7eaf\u6587\u672c<\/span><\/div><div class=\"chp-toolbar-right\"><button type=\"button\" class=\"chp-copy-btn\" aria-label=\"\u590d\u5236\u4ee3\u7801\"><svg class=\"chp-icon-copy\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\/><\/svg><svg class=\"chp-icon-check\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" aria-hidden=\"true\" style=\"display:none;\"><path fill=\"currentColor\" d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\/><\/svg><span class=\"chp-copy-text\">\u590d\u5236<\/span><\/button><\/div><\/div><div class=\"chp-code-wrapper\"><div class=\"chp-line-numbers\" aria-hidden=\"true\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><span>6<\/span><span>7<\/span><\/div><pre class=\"chp-pre\" style=\"font-size:14px;\"><code class=\"language-plaintext\">from fastapi import FastAPI\n\napp = FastAPI()\n\n@app.get(&quot;\/users\/{user_id}\/items\/{item_id}&quot;)\nasync def read_user_item(user_id: int, item_id: str):\n    return {&quot;user_id&quot;: user_id, &quot;item_id&quot;: item_id}<\/code><\/pre><\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u603b\u7ed3\uff1a\u8def\u5f84\u53c2\u6570\u6700\u4f73\u5b9e\u8df5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u59cb\u7ec8\u58f0\u660e\u7c7b\u578b<\/strong>\uff1a\u4e0d\u8981\u53ea\u5199 <code>item_id<\/code>\uff0c\u8981\u5199 <code>item_id: int<\/code>\uff0c\u8ba9 FastAPI \u5e2e\u4f60\u505a\u9a8c\u8bc1\u3002<\/li>\n\n\n\n<li><strong>\u4f18\u5148\u4f7f\u7528 <code>Annotated<\/code> + <code>Path<\/code><\/strong>\uff1a\u8fd9\u662f\u73b0\u4ee3 FastAPI \u7684\u6807\u51c6\u5199\u6cd5\uff0c\u4ee3\u7801\u66f4\u6574\u6d01\uff0c\u4e14\u5bf9 IDE \u548c\u7c7b\u578b\u68c0\u67e5\u5668\u66f4\u53cb\u597d\u3002<\/li>\n\n\n\n<li><strong>\u6ce8\u610f\u8def\u7531\u987a\u5e8f<\/strong>\uff1a\u5177\u4f53\u7684\u3001\u56fa\u5b9a\u7684\u8def\u7531\u6c38\u8fdc\u653e\u5728\u901a\u7528\u7684\u3001\u52a8\u6001\u7684\u8def\u7531\u4e4b\u524d\u3002<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f60\u60f3\u7ee7\u7eed\u4e86\u89e3 <strong>\u67e5\u8be2\u53c2\u6570 (Query Parameters)<\/strong>\uff0c\u8fd8\u662f\u60f3\u770b\u770b\u5982\u4f55\u5c06\u8def\u5f84\u53c2\u6570\u4e0e <strong>\u6570\u636e\u5e93\u67e5\u8be2 (\u5982 SQLAlchemy)<\/strong> \u7ed3\u5408\u8d77\u6765\uff1f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728 FastAPI \u4e2d\uff0c\u8def\u5f84\u53c2\u6570\uff08Path Paramete&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-141","post","type-post","status-publish","format-standard","hentry","category-fastapi-"],"_links":{"self":[{"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/posts\/141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/comments?post=141"}],"version-history":[{"count":1,"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/posts\/141\/revisions"}],"predecessor-version":[{"id":142,"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/posts\/141\/revisions\/142"}],"wp:attachment":[{"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/media?parent=141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/categories?post=141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.52runoob.com\/index.php\/wp-json\/wp\/v2\/tags?post=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}