{"id":5051,"date":"2025-02-10T20:00:00","date_gmt":"2025-02-10T11:00:00","guid":{"rendered":"https:\/\/www.wetch.co.jp\/note\/?p=5051"},"modified":"2025-02-10T20:13:45","modified_gmt":"2025-02-10T11:13:45","slug":"%ef%bc%88%e3%81%a1%e3%82%87%e3%81%a3%e3%81%a8%e3%83%8b%e3%83%83%e3%83%81%e3%81%aa%ef%bc%89fastapi%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%e3%81%ae%e5%b7%bb%ef%bc%88%e3%81%9d%e3%81%ae%ef%bc%92%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.wetch.co.jp\/note\/%ef%bc%88%e3%81%a1%e3%82%87%e3%81%a3%e3%81%a8%e3%83%8b%e3%83%83%e3%83%81%e3%81%aa%ef%bc%89fastapi%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%e3%81%ae%e5%b7%bb%ef%bc%88%e3%81%9d%e3%81%ae%ef%bc%92%ef%bc%89\/","title":{"rendered":"\uff08\u3061\u3087\u3063\u3068\u30cb\u30c3\u30c1\u306a\uff09FastAPI\u74b0\u5883\u69cb\u7bc9\u306e\u5dfb\uff08\u305d\u306e\uff12\uff09"},"content":{"rendered":"<p><a href=\"https:\/\/www.wetch.co.jp\/note\/%ef%bc%88%e3%81%a1%e3%82%87%e3%81%a3%e3%81%a8%e3%83%8b%e3%83%83%e3%83%81%e3%81%aa%ef%bc%89fastapi%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%e3%81%ae%e5%b7%bb%ef%bc%88%e3%81%9d%e3%81%ae%ef%bc%91%ef%bc%89\/\" data-wplink-edit=\"true\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3067 FastAPI \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u307e\u3067\u304c\u5b8c\u4e86\u3057\u305f\u72b6\u614b\u3067\u3059\u306e\u3067\u3001\u52d5\u4f5c\u78ba\u8a8d\u3092\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u307e\u305aFastAPI\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002python\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u30b7\u30a7\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u78ba\u8a8d\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"wp-block-code\"><code>(venv) pgvector-test@host:~\/apps\/fastapi$ python3\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2190\u3000venv\u304c\u6709\u52b9\u5316\u3055\u308c\u3066\u3044\u308b\nPython 3.10.12 (main, Jan 17 2025, 14:35:34) &#91;GCC 11.4.0] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n&gt;&gt;&gt; from fastapi import FastAPI\n&gt;&gt;&gt;                                                 \u2190\u3000\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u30a8\u30e9\u30fc\u304c\u51fa\u306a\u3044<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u3067\u304d\u3066\u3044\u308b\u306e\u3067\u3001\u6b21\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30bd\u30fc\u30b9\u3092\u7528\u610f\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">main.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from fastapi import FastAPI\n\napp = FastAPI()\n\n@app.get(\"\/\")\nasync def root():\n    return {\"message\": \"Hello World\"}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u30eb\u30fc\u30c8URL\u306bGET\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u884c\u308f\u308c\u305f\u5834\u5408\u306b\u3001JSON\u5f62\u5f0f\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3067 &#8220;Hello World&#8221; \u3092\u8fd4\u5374\u3059\u308b\u3068\u3044\u3046\u30b7\u30f3\u30d7\u30eb\u306a\u30bd\u30fc\u30b9\u3067\u3059\u3002\u30bd\u30fc\u30b9\u3092\u4ee5\u4e0b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>home\/pgvector-test\/apps\/fastapi\/app<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3067\u306f\u3001uvicorn \u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(venv) pgvector-test@host:~\/apps\/fastapi\/app$ uvicorn main:app --reload\nINFO:     Will watch for changes in these directories: &#91;'\/home\/pgvector-test\/apps\/fastapi\/app']\nINFO:     Uvicorn running on http:\/\/127.0.0.1:8000 (Press CTRL+C to quit)\nINFO:     Started reloader process &#91;11338] using WatchFiles\nINFO:     Started server process &#91;11341]\nINFO:     Waiting for application startup.\nINFO:     Application startup complete.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ASGI\u30b5\u30fc\u30d0\u304c\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>^CINFO:     Shutting down\nINFO:     Waiting for application shutdown.\nINFO:     Application shutdown complete.\nINFO:     Finished server process &#91;11341]\nINFO:     Stopping reloader process &#91;11338]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ctrl + C\uff08Mac\u3067\u3059\u3002\uff09\u3067\u30b5\u30fc\u30d0\u304c\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305f\u3060\u3001\u4e0a\u306e\u65b9\u306b\u3082\u8a18\u8ff0\u304c\u3042\u308b\u901a\u308a\u3001ASGI\u30b5\u30fc\u30d0\u306f 127.0.0.1:8000 \u3067LISTEN\u3057\u3066\u3044\u307e\u3059\u3002\u4eca\u56de\u306f Webmin \/ Virtualmin \u74b0\u5883\u4e0a\u3067\u3059\u306e\u3067\u3001\u305d\u306e\u307e\u307e\u3067\u306f\u30d6\u30e9\u30a6\u30b6\u4e0a\u306b\u8868\u793a\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3069\u3046\u3057\u305f\u3089\u3044\u3044\u3082\u306e\u304b\u3068\u8abf\u3079\u3066\u3044\u305f\u3068\u3053\u308d\u3001Apache\uff08Web\u30b5\u30fc\u30d0\uff09\u3092\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067ASGI\u30b5\u30fc\u30d0\u5074\u306b\u30dd\u30fc\u30c8\u8ee2\u9001\u3092\u304b\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u3067\u3059\u3002\u3084\u3063\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apache\u306econf\uff08\/etc\/apache2\/sites-available\/pgvector-test.com.conf\uff09\u306b\u4ee5\u4e0b\u306e\u8a18\u8ff0\u3092\u8ffd\u52a0\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost XXX.XXX.XXX.XXX:80 &#91;xxxx::xx:xxxx:xxxx:xxxx]:80>\n\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u30fb\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u30fb\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u30fb\n\n    # FastAPI\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u8a2d\u5b9a\n    ProxyPreserveHost On\n    ProxyPass \/api http:\/\/127.0.0.1:8000\/\n    ProxyPassReverse \/api http:\/\/127.0.0.1:8000\/\n\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\n&lt;\/VirtualHost>\n&lt;VirtualHost XXX.XXX.XXX.XXX:443 &#91;xxxx::xx:xxxx:xxxx:xxxx]:443>\n\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u30fb\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u30fb\n\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u30fb\n\n    # FastAPI\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u8a2d\u5b9a\n    ProxyPreserveHost On\n    ProxyPass \/api http:\/\/127.0.0.1:8000\/\n    ProxyPassReverse \/api http:\/\/127.0.0.1:8000\/\n\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\n&lt;\/VirtualHost><\/code><\/pre>\n\n\n<p>Apache\u304c\u53d7\u3051\u53d6\u3063\u305f<code>\/api<\/code>\u3067\u59cb\u307e\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3001\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u306e\u30dd\u30fc\u30c88000\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308bFastAPI\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u8ee2\u9001\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3092\u884c\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u8a2d\u5b9a\u5f8c\u306bApache\u3092\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"wp-block-code\"><code># systemctl restart apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u5ea6ASGI\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(venv) pgvector-test@host:~\/apps\/fastapi\/app$ uvicorn main:app --reload\nINFO:     Will watch for changes in these directories: &#91;'\/home\/pgvector-test\/apps\/fastapi\/app']\nINFO:     Uvicorn running on http:\/\/127.0.0.1:8000 (Press CTRL+C to quit)\nINFO:     Started reloader process &#91;15745] using WatchFiles\nINFO:     Started server process &#91;15747]\nINFO:     Waiting for application startup.\nINFO:     Application startup complete.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d6\u30e9\u30a6\u30b6\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:\/\/pgvector-test.com\/api\u3000\uff08\/etc\/hosts\u306b\u8a2d\u5b9a\u6e08\u307f\uff09<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44-1024x585.png\" alt=\"\" class=\"wp-image-5052\" srcset=\"https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44-1024x585.png 1024w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44-300x171.png 300w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44-768x439.png 768w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44-1536x878.png 1536w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44-150x86.png 150w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44-696x398.png 696w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44-1068x610.png 1068w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-07-16.33.44.png 1568w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">json\u306e\u5fdc\u7b54\u304c\u8868\u793a\u3055\u308c\u307e\u3057\u305f\u306d\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305f\u3060\u3001\u3053\u308c\u3060\u3068\u30b5\u30fc\u30d0\u304c\u518d\u8d77\u52d5\u3057\u305f\u5834\u5408\u3001ASGI\u30b5\u30fc\u30d0\u3092\u624b\u52d5\u3067\u518d\u8d77\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3067\u3059\u306e\u3067\u30b7\u30b9\u30c6\u30e0\u30b5\u30fc\u30d3\u30b9\u306b\u767b\u9332\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b7\u30b9\u30c6\u30e0\u30b5\u30fc\u30d3\u30b9\u306e\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u306f\u4ee5\u4e0b\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/systemd\/system<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306f\u3001FastAPI\u306eASGI\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066 fastapi.service \u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002\u8a2d\u5b9a\u5185\u5bb9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=FastAPI application\nAfter=network.target\n\n&#91;Service]\nUser=pgvector-test\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2190\u3000\u4eee\u60f3\u30db\u30b9\u30c8\u4f5c\u6210\u6642\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8a2d\u5b9a\u3000\nGroup=pgvector-test\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2190\u3000\u4eee\u60f3\u30db\u30b9\u30c8\u4f5c\u6210\u6642\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u8a2d\u5b9a\nWorkingDirectory=\/home\/pgvector-test\/apps\/fastapi\/app\u3000\u3000\u2190\u3000\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u6307\u5b9a\nExecStart=\/home\/pgvector-test\/apps\/fastapi\/venv\/bin\/uvicorn main:app --host 0.0.0.0 --port 8000\nRestart=always\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u2190\u3000uvicorn\u30b3\u30de\u30f3\u30c9\u306e\u5b9f\u884c\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u6642\u306e\u8a18\u8ff0\u3067\u6ce8\u610f\u3059\u308b\u70b9\u3068\u3057\u3066\u306f\u3001\u5b9f\u884c\u30e6\u30fc\u30b6\u30fc\u304c\u4f7f\u7528\u3059\u308buvicorn\u306e\u5834\u6240\u3092\u6b63\u3057\u304f\u6307\u5b9a\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8a18\u5185\u5bb9\u3067\u30b7\u30b9\u30c6\u30e0\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066\u767b\u9332\u3057\u3001\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># systemctl daemon-reload\u3000\u3000\u3000\u3000\u2190\u3000systemd \u306b\u53cd\u6620\u3059\u308b\n# systemctl start fastapi\u3000\u3000\u3000\u3000\u3000\u3000\u2190\u3000fastapi.service \u3092\u8d77\u52d5\u3059\u308b\n# systemctl enable fastapi\u3000\u3000\u3000\u3000\u3000\u2190\u3000fastapi.service \u306e\u81ea\u52d5\u8d77\u52d5\u3092\u6709\u52b9\u306b\u3059\u308b\nCreated symlink \/etc\/systemd\/system\/multi-user.target.wants\/fastapi.service \u2192 \/etc\/systemd\/system\/fastapi.service.\n# systemctl status fastapi\u3000\u3000\u3000\u3000\u3000\u2190\u3000\u30b5\u30fc\u30d3\u30b9\u306e\u72b6\u614b\u3092\u78ba\u8a8d\n\u25cf fastapi.service - FastAPI application\n     Loaded: loaded (\/etc\/systemd\/system\/fastapi.service; enabled; vendor preset: enabled)\n     Active: active (running) since Mon 2025-02-10 12:22:58 JST; 11min ago\n   Main PID: 1279 (uvicorn)\n      Tasks: 6 (limit: 4646)\n     Memory: 40.0M\n        CPU: 2.711s\n     CGroup: \/system.slice\/fastapi.service\n             \u2514\u25001279 \/home\/pgvector-test\/apps\/fastapi\/venv\/bin\/python3 \/home\/pgvector-test\/apps\/fastapi\/venv\/bin\/uvicorn main:app --host 0.0&gt;\n\nFeb 10 12:22:58 host.pgvector-test.com systemd&#91;1]: Started FastAPI application.\nFeb 10 12:23:02 host.pgvector-test.com uvicorn&#91;1279]: INFO:     Started server process &#91;1279]\nFeb 10 12:23:02 host.pgvector-test.com uvicorn&#91;1279]: INFO:     Waiting for application startup.\nFeb 10 12:23:02 host.pgvector-test.com uvicorn&#91;1279]: INFO:     Application startup complete.\nFeb 10 12:23:02 host.pgvector-test.com uvicorn&#91;1279]: INFO:     Uvicorn running on http:\/\/0.0.0.0:8000 (Press CTRL+C to quit)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u5fdc\u8d77\u52d5\u304c\u78ba\u8a8d\u3067\u304d\u305f\u72b6\u614b\u3067\u3001\u518d\u5ea6\u30d6\u30e9\u30a6\u30b6\u8868\u793a\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;pgvector-test.com\/<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"533\" src=\"https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00-1024x533.png\" alt=\"\" class=\"wp-image-5100\" srcset=\"https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00-1024x533.png 1024w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00-300x156.png 300w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00-768x400.png 768w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00-1536x799.png 1536w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00-150x78.png 150w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00-696x362.png 696w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00-1068x556.png 1068w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.00.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;pgvector-test.com\/api<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"513\" src=\"https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31-1024x513.png\" alt=\"\" class=\"wp-image-5101\" srcset=\"https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31-1024x513.png 1024w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31-300x150.png 300w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31-768x384.png 768w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31-1536x769.png 1536w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31-150x75.png 150w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31-696x348.png 696w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31-1068x535.png 1068w, https:\/\/www.wetch.co.jp\/note\/wp-content\/uploads\/2025\/02\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-02-10-12.37.31.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u308c\u305e\u308c\u8868\u793a\u3001\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">API\u306e\u57fa\u672c\u7684\u306a\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u305f\u306e\u3067\u3001\u3053\u308c\u3092\u8db3\u304c\u304b\u308a\u306b\u307c\u3061\u307c\u3061\u9032\u3081\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306e\u8a18\u4e8b\u3067 FastAPI \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u307e\u3067\u304c\u5b8c\u4e86\u3057\u305f\u72b6\u614b\u3067\u3059\u306e\u3067\u3001\u52d5\u4f5c\u78ba\u8a8d\u3092\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u307e\u305aFastAPI\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002python\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u30b7\u30a7\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u78ba\u8a8d\u304c\u3067 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":5053,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[210,213],"tags":[],"class_list":["post-5051","post","type-post","status-publish","format-standard","has-post-thumbnail","category-210","category-213"],"_links":{"self":[{"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/posts\/5051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/comments?post=5051"}],"version-history":[{"count":0,"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/posts\/5051\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/media\/5053"}],"wp:attachment":[{"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/media?parent=5051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/categories?post=5051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wetch.co.jp\/note\/wp-json\/wp\/v2\/tags?post=5051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}