{"id":461,"date":"2023-09-15T01:17:25","date_gmt":"2022-09-01T07:11:01","guid":{"rendered":"https:\/\/www.silicloud.com\/ja\/blog\/index.php\/2023\/11\/30\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/"},"modified":"2025-07-31T23:46:24","modified_gmt":"2025-07-31T14:46:24","slug":"prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/","title":{"rendered":"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5"},"content":{"rendered":"<p>\u8457\u8005\u306f\u3001Write for Donations\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4e00\u74b0\u3068\u3057\u3066\u3001\u5bc4\u4ed8\u3092\u53d7\u3051\u53d6\u308b\u305f\u3081\u306bDiversity in Tech Fund\u3068Tech Education Fund\u3092\u9078\u3073\u307e\u3057\u305f\u3002<\/p>\n<h3>\u30a4\u30f3\u30c8\u30ed\u30c0\u30af\u30b7\u30e7\u30f3<\/h3>\n<p>Prisma\u306f\u3001Node.js\u3068TypeScript\u5411\u3051\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eORM\u3067\u3059\u3002Prisma\u306f\u3001\u4e3b\u306b3\u3064\u306e\u4e3b\u8981\u306a\u30c4\u30fc\u30eb\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Prisma Client: An auto-generated and type-safe query builder.<\/li>\n<li>Prisma Migrate: A powerful data modeling and migration system.<\/li>\n<li>Prisma Studio: A GUI to view and edit data in your database.<\/li>\n<\/ul>\n<p>\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u696d\u30d5\u30ed\u30fc\u306b\u304a\u3051\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u8005\u306e\u751f\u7523\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u3044\u307e\u3059\u3002Prisma\u306e\u6700\u5927\u306e\u5229\u70b9\u306e\u4e00\u3064\u306f\u3001\u305d\u306e\u62bd\u8c61\u5316\u30ec\u30d9\u30eb\u3067\u3059\u3002\u8907\u96d1\u306aSQL\u30af\u30a8\u30ea\u3084\u30b9\u30ad\u30fc\u30de\u306e\u5909\u66f4\u3092\u89e3\u6c7a\u3059\u308b\u4ee3\u308f\u308a\u306b\u3001Prisma\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u8005\u306f\u3088\u308a\u76f4\u611f\u7684\u306a\u65b9\u6cd5\u3067\u30c7\u30fc\u30bf\u306b\u3064\u3044\u3066\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001Prisma\u3068PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001TypeScript\u3067\u5c0f\u898f\u6a21\u306a\u30d6\u30ed\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u305f\u3081\u306eREST API\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002Docker\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30fc\u30ab\u30eb\u306bPostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u3001Express\u3092\u4f7f\u7528\u3057\u3066REST API\u306e\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u6700\u5f8c\u306b\u306f\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5fdc\u7b54\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u66f8\u304d\u3067\u304d\u308b\u3001\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<h2>\u524d\u63d0\u6761\u4ef6<\/h2>\n<p>\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001\u4ee5\u4e0b\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Node.js version 14 or higher installed on your machine. You can use one of the How To Install Node.js and Create a Local Development Environment guides for your OS to set this up.<\/li>\n<li>Docker installed on your machine (to run the PostgreSQL database). You can install on macOS and Windows via the Docker website, or follow How To Install and User Docker for Linux distributions.<\/li>\n<\/ul>\n<p>\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001TypeScript\u3068REST API\u306b\u3064\u3044\u3066\u306e\u57fa\u672c\u7684\u306a\u77e5\u8b58\u304c\u3042\u308b\u3068\u5f79\u7acb\u3061\u307e\u3059\u304c\u3001\u5fc5\u9808\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d71 \u2014 TypeScript\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210<\/h2>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001npm\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ec\u30fc\u30f3\u306aTypeScript\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3001\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u69cb\u7bc9\u3059\u308bREST API\u306e\u57fa\u790e\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306e\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">mkdir<\/span> my-blog<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306b\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u3066\u7a7a\u306enpm\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306e-y\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u30b3\u30de\u30f3\u30c9\u306e\u5bfe\u8a71\u7684\u306a\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u30b3\u30de\u30f3\u30c9\u304b\u3089-y\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token builtin class-name\">cd<\/span> my-blog<\/li>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> init <span class=\"token parameter variable\">-y<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u308c\u3089\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u95a2\u3059\u308b\u8a73\u7d30\u306f\u3001\u300cHow To Use Node.js Modules with npm and package.json\u300d\u306e\u30b9\u30c6\u30c3\u30d71\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5fdc\u7b54\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u6b21\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u53d7\u3051\u53d6\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Wrote to \/&#8230;\/my-blog\/package.json: { &#8220;name&#8221;: &#8220;my-blog&#8221;, &#8220;version&#8221;: &#8220;1.0.0&#8221;, &#8220;description&#8221;: &#8220;&#8221;, &#8220;main&#8221;: &#8220;index.js&#8221;, &#8220;scripts&#8221;: { &#8220;test&#8221;: &#8220;echo \\&#8221;Error: no test specified\\&#8221; &amp;&amp; exit 1&#8243; }, &#8220;keywords&#8221;: [], &#8220;author&#8221;: &#8220;&#8221;, &#8220;license&#8221;: &#8220;ISC&#8221; }<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001npm\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u6700\u5c0f\u9650\u306epackage.json\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u308c\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bTypeScript\u3092\u8a2d\u5b9a\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\u3002<\/p>\n<p>\u30d7\u30ec\u30fc\u30f3\u306a TypeScript \u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> <span class=\"token function\">install<\/span> typescript ts-node @types\/node &#8211;save-dev<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306f\u3001\u4ee5\u4e0b\u306e3\u3064\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u958b\u767a\u306e\u4f9d\u5b58\u95a2\u4fc2\u3068\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>typescript: The TypeScript toolchain.<\/li>\n<li>ts-node: A package to run TypeScript applications without prior compilation to JavaScript.<\/li>\n<li>@types\/node: The TypeScript type definitions for Node.js.<\/li>\n<\/ul>\n<p>\u6700\u5f8c\u306b\u3059\u308b\u3079\u304d\u3053\u3068\u306f\u3001\u4f5c\u6210\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u9069\u5207\u306bTypeScript\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001tsconfig.json\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> tsconfig.json<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306eJSON\u30b3\u30fc\u30c9\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306etsconfig.json<\/div>\n<pre class=\"post-pre\"><code><span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property\">\"compilerOptions\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token property\">\"sourceMap\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token property\">\"outDir\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"dist\"<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token property\">\"strict\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token property\">\"lib\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">\"esnext\"<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token property\">\"esModuleInterop\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3053\u306e\u8a2d\u5b9a\u306f\u3001TypeScript \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6a19\u6e96\u7684\u304b\u3064\u6700\u5c0f\u69cb\u6210\u3067\u3059\u3002\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5404\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u3064\u3044\u3066\u5b66\u3073\u305f\u3044\u5834\u5408\u306f\u3001TypeScript \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3042\u306a\u305f\u306fnpm\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ec\u30fc\u30f3\u306aTypeScript\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3057\u305f\u3002\u6b21\u306b\u3001Docker\u3092\u4f7f\u7528\u3057\u3066PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u3001\u305d\u308c\u306bPrisma\u3092\u63a5\u7d9a\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d72 \u2014 PostgreSQL\u3092\u4f7f\u7528\u3057\u3066Prisma\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b<\/h2>\n<p>\u3053\u306e\u624b\u9806\u3067\u306f\u3001Prisma CLI\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u521d\u671f\u306ePrisma\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001PostgreSQL\u3092Docker\u3067\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u3001\u305d\u308c\u306bPrisma\u3092\u63a5\u7d9a\u3057\u307e\u3059\u3002 Prisma\u30b9\u30ad\u30fc\u30de\u306f\u3001Prisma\u306e\u8a2d\u5b9a\u306e\u30e1\u30a4\u30f3\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308a\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b9\u30ad\u30fc\u30de\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001Prisma CLI\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> <span class=\"token function\">install<\/span> prisma &#8211;save-dev<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u3057\u3066\u3001\u30d7\u30ea\u30ba\u30de CLI\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306b\u30ed\u30fc\u30ab\u30eb\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306f\u3001\u30de\u30b7\u30f3\u4e0a\u306b\u8907\u6570\u306e\u30d7\u30ea\u30ba\u30de\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308b\u5834\u5408\u306b\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u7af6\u5408\u3092\u907f\u3051\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306b\u3001Docker\u3092\u4f7f\u7528\u3057\u3066PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044Docker Compose\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> docker-compose.yml<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u65b0\u3057\u304f\u4f5c\u6210\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306edocker-compose.yml<\/div>\n<pre class=\"post-pre\"><code><span class=\"token key atrule\">version<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'3.8'<\/span>\r\n<span class=\"token key atrule\">services<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token key atrule\">postgres<\/span><span class=\"token punctuation\">:<\/span>\r\n    <span class=\"token key atrule\">image<\/span><span class=\"token punctuation\">:<\/span> postgres<span class=\"token punctuation\">:<\/span><span class=\"token number\">10.3<\/span>\r\n    <span class=\"token key atrule\">restart<\/span><span class=\"token punctuation\">:<\/span> always\r\n    <span class=\"token key atrule\">environment<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token punctuation\">-<\/span> POSTGRES_USER=<mark>sammy<\/mark>\r\n      <span class=\"token punctuation\">-<\/span> POSTGRES_PASSWORD=<mark>your_password<\/mark>\r\n    <span class=\"token key atrule\">volumes<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token punctuation\">-<\/span> postgres<span class=\"token punctuation\">:<\/span>\/var\/lib\/postgresql\/data\r\n    <span class=\"token key atrule\">ports<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token punctuation\">-<\/span> <span class=\"token string\">'5432:5432'<\/span>\r\n<span class=\"token key atrule\">volumes<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token key atrule\">postgres<\/span><span class=\"token punctuation\">:<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306eDocker Compose\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30dd\u30fc\u30c85432\u7d4c\u7531\u3067\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306aPostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u73fe\u5728\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8a8d\u8a3c\u60c5\u5831\u306fsammy\uff08\u30e6\u30fc\u30b6\u30fc\uff09\u3068your_password\uff08\u30d1\u30b9\u30ef\u30fc\u30c9\uff09\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8a8d\u8a3c\u60c5\u5831\u3092\u304a\u597d\u307f\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u306b\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3053\u306e\u8a2d\u5b9a\u3092\u884c\u3063\u305f\u5f8c\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3067PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker-compose<\/span> up <span class=\"token parameter variable\">-d<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306e\u51fa\u529b\u306f\u3053\u308c\u306b\u4f3c\u3066\u3044\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Pulling postgres (postgres:10.3)&#8230; 10.3: Pulling from library\/postgres f2aa67a397c4: Pull complete 6de83ca23e55: Pull complete . . . Status: Downloaded newer image for postgres:10.3 Creating my-blog_postgres_1 &#8230; done<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u304c\u7a3c\u50cd\u3057\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> <span class=\"token function\">ps<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u3053\u306e\u3088\u3046\u306a\u3082\u306e\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8547f8e007ba postgres:10.3 &#8220;docker-entrypoint.s\u2026&#8221; 3 seconds ago Up 2 seconds 0.0.0.0:5432-&gt;5432\/tcp my-blog_postgres_1<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u304c\u7a3c\u50cd\u3057\u3066\u3044\u308b\u72b6\u614b\u3067\u3001\u3042\u306a\u305f\u306fPrisma\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Prisma CLI\u304b\u3089\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx prisma init<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u51fa\u529b\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u2714 Your Prisma schema was created at prisma\/schema.prisma. You can now open it in your favorite editor.<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6700\u826f\u306e\u65b9\u6cd5\u3068\u3057\u3066\u3001Prisma CLI\u3092\u4f7f\u7528\u3059\u308b\u3059\u3079\u3066\u306e\u547c\u3073\u51fa\u3057\u306e\u524d\u306b\u3001npx\u3092\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u3057\u3066\u4ed8\u3051\u308b\u3053\u3068\u3067\u3001\u30ed\u30fc\u30ab\u30eb\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001Prisma CLI\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306bprisma\u3068\u3044\u3046\u65b0\u3057\u3044\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u305d\u306e\u4e2d\u306b\u306f\u3001schema.prisma\u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001Prisma\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30a4\u30f3\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308a\uff08\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u542b\u3080\uff09\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9aURL\u3092\u5b9a\u7fa9\u3059\u308b\u5834\u6240\u3067\u3082\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u306b.env\u30c9\u30c3\u30c8\u30a8\u30f3\u30d6\u30d5\u30a1\u30a4\u30eb\u3082\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<p>Prisma\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u5834\u6240\u3092\u8a8d\u8b58\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001.env\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001DATABASE_URL\u74b0\u5883\u5909\u6570\u3092\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u6700\u521d\u306b.env\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>(Note: The response above is a one possible way to paraphrase the given statement in Japanese.)<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> .env<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u74b0\u5883\u5909\u6570\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\/.env<\/div>\n<pre class=\"post-pre\"><code>DATABASE_URL=\"postgresql:\/\/<mark>sammy<\/mark>:<mark>your_password<\/mark>@localhost:5432\/my-blog?schema=public\"\r\n<\/code><\/pre>\n<p>Docker Compose \u30d5\u30a1\u30a4\u30eb\u3067\u6307\u5b9a\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8a8d\u8a3c\u60c5\u5831\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u5fd8\u308c\u305a\u306b\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u63a5\u7d9a URL \u306e\u5f62\u5f0f\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u306f\u3001Prisma \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u4f5c\u696d\u304c\u7d42\u308f\u308a\u307e\u3057\u305f\u3089\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001Docker\u3092\u4f7f\u7528\u3057\u3066PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u8a2d\u5b9a\u3057\u3001Prisma CLI\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u74b0\u5883\u5909\u6570\u3092\u4ecb\u3057\u3066Prisma\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d73 &#8211; \u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c6\u30fc\u30d6\u30eb\u306e\u4f5c\u6210<\/h2>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001Prisma\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u3067\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u3053\u306e\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u306f\u3001Prisma Migrate\u3092\u4f7f\u3063\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u306b\u5bfe\u5fdc\u3059\u308b\u30c6\u30fc\u30d6\u30eb\u306e\u4f5c\u6210\u306b\u4f7f\u7528\u3055\u308c\u308bSQL\u6587\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u30d6\u30ed\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e3b\u8981\u306a\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306f\u30e6\u30fc\u30b6\u30fc\u3068\u6295\u7a3f\u3067\u3059\u3002<\/p>\n<p>\u30d7\u30ea\u30ba\u30de\u306f\u72ec\u81ea\u306e\u30c7\u30fc\u30bf\u30e2\u30c7\u30ea\u30f3\u30b0\u8a00\u8a9e\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u5f62\u72b6\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3067schema.prisma\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> prisma\/schema.prisma<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u30e2\u30c7\u30eb\u5b9a\u7fa9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30e2\u30c7\u30eb\u306f\u3001\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30d6\u30ed\u30c3\u30af\u306e\u76f4\u5f8c\u306b\u30d5\u30a1\u30a4\u30eb\u306e\u6700\u5f8c\u306b\u914d\u7f6e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306e\u30b9\u30ad\u30fc\u30de\u306f\u3001&#8221;my-blog\/prisma\/schema.prisma&#8221; \u3067\u3059\u3002<\/div>\n<pre class=\"post-pre\"><code>. . .\r\nmodel User {\r\n  id    Int     @default(autoincrement()) @id\r\n  email String  @unique\r\n  name  String?\r\n  posts Post[]\r\n}\r\n\r\nmodel Post {\r\n  id        Int     @default(autoincrement()) @id\r\n  title     String\r\n  content   String?\r\n  published Boolean @default(false)\r\n  author    User?   @relation(fields: [authorId], references: [id])\r\n  authorId  Int?\r\n}\r\n<\/code><\/pre>\n<p>\u3042\u306a\u305f\u306fUser\u3068Post\u3068\u3044\u30462\u3064\u306e\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u30e2\u30c7\u30eb\u306b\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8868\u3059\u3044\u304f\u3064\u304b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308a\u307e\u3059\u3002\u30e2\u30c7\u30eb\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c6\u30fc\u30d6\u30eb\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u500b\u3005\u306e\u5217\u3092\u8868\u3057\u307e\u3059\u3002<\/p>\n<p>\u4e00\u3064\u306e\u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb\u3068\u6295\u7a3f\u30e2\u30c7\u30eb\u306e\u9593\u306b\u306f\u3001User\u3068Post\u306e\u95a2\u4fc2\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u3088\u3063\u3066\u6307\u5b9a\u3055\u308c\u308b\u4e00\u5bfe\u591a\u306e\u95a2\u4fc2\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u4e00\u3064\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u591a\u304f\u306e\u6295\u7a3f\u3068\u95a2\u9023\u4ed8\u3051\u3089\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3053\u308c\u3089\u306e\u30e2\u30c7\u30eb\u3092\u7528\u610f\u3057\u305f\u3089\u3001Prisma Migrate\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306b\u5bfe\u5fdc\u3059\u308b\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx prisma migrate dev <span class=\"token parameter variable\">&#8211;name<\/span> init<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u65b0\u3057\u3044SQL\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306b\u4f5c\u6210\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002\u30b3\u30de\u30f3\u30c9\u306b\u63d0\u4f9b\u3055\u308c\u308b&#8211;name init\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u540d\u524d\u3092\u6307\u5b9a\u3057\u3001\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u4e0a\u306b\u4f5c\u6210\u3055\u308c\u308b\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30d5\u30a9\u30eb\u30c0\u306e\u540d\u524d\u306b\u3082\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306e\u51fa\u529b\u306f\u3001\u3053\u308c\u306b\u4f3c\u305f\u3082\u306e\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Environment variables loaded from .env Prisma schema loaded from prisma\/schema.prisma Datasource &#8220;db&#8221;: PostgreSQL database &#8220;my-blog&#8221;, schema &#8220;public&#8221; at &#8220;localhost:5432&#8221; PostgreSQL database my-blog created at localhost:5432 The following migration(s) have been created and applied from new schema changes: migrations\/ \u2514\u2500 20201209084626_init\/ \u2514\u2500 migration.sql Running generate&#8230; (Use &#8211;skip-generate to skip the generators) \u2714 Generated Prisma Client (2.13.0) to .\/node_modules\/@prisma\/client in 75ms<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>prisma\/migrations\/20201209084626_init\/migration.sql \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b SQL \u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3055\u308c\u305f\u4ee5\u4e0b\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\uff08\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u30cf\u30a4\u30e9\u30a4\u30c8\u90e8\u5206\u306f\u74b0\u5883\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\uff09\u3002<\/p>\n<div>\u4ee5\u4e0b\u306e\u901a\u308a\u3001\u65e5\u672c\u8a9e\u3067\u8a00\u3044\u63db\u3048\u307e\u3059\uff081\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u307f\uff09\uff1a<br \/>\nprisma\/migrations\/20201209084626_init\/migration.sql<br \/>\n\u30d7\u30ea\u30ba\u30de\/\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\/20201209084626_init\/\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3. SQL<\/div>\n<pre class=\"post-pre\"><code><span class=\"token comment\">-- CreateTable<\/span>\r\n<span class=\"token keyword\">CREATE<\/span> <span class=\"token keyword\">TABLE<\/span> <span class=\"token string\">\"User\"<\/span> <span class=\"token punctuation\">(<\/span>\r\n<span class=\"token string\">\"id\"<\/span> <span class=\"token keyword\">SERIAL<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token string\">\"email\"<\/span> <span class=\"token keyword\">TEXT<\/span> <span class=\"token operator\">NOT<\/span> <span class=\"token boolean\">NULL<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token string\">\"name\"<\/span> <span class=\"token keyword\">TEXT<\/span><span class=\"token punctuation\">,<\/span>\r\n\r\n    <span class=\"token keyword\">PRIMARY<\/span> <span class=\"token keyword\">KEY<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">\"id\"<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">-- CreateTable<\/span>\r\n<span class=\"token keyword\">CREATE<\/span> <span class=\"token keyword\">TABLE<\/span> <span class=\"token string\">\"Post\"<\/span> <span class=\"token punctuation\">(<\/span>\r\n<span class=\"token string\">\"id\"<\/span> <span class=\"token keyword\">SERIAL<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token string\">\"title\"<\/span> <span class=\"token keyword\">TEXT<\/span> <span class=\"token operator\">NOT<\/span> <span class=\"token boolean\">NULL<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token string\">\"content\"<\/span> <span class=\"token keyword\">TEXT<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token string\">\"published\"<\/span> <span class=\"token keyword\">BOOLEAN<\/span> <span class=\"token operator\">NOT<\/span> <span class=\"token boolean\">NULL<\/span> <span class=\"token keyword\">DEFAULT<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token string\">\"authorId\"<\/span> <span class=\"token keyword\">INTEGER<\/span><span class=\"token punctuation\">,<\/span>\r\n\r\n    <span class=\"token keyword\">PRIMARY<\/span> <span class=\"token keyword\">KEY<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">\"id\"<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">-- CreateIndex<\/span>\r\n<span class=\"token keyword\">CREATE<\/span> <span class=\"token keyword\">UNIQUE<\/span> <span class=\"token keyword\">INDEX<\/span> <span class=\"token string\">\"User.email_unique\"<\/span> <span class=\"token keyword\">ON<\/span> <span class=\"token string\">\"User\"<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"email\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">-- AddForeignKey<\/span>\r\n<span class=\"token keyword\">ALTER<\/span> <span class=\"token keyword\">TABLE<\/span> <span class=\"token string\">\"Post\"<\/span> <span class=\"token keyword\">ADD<\/span> <span class=\"token keyword\">FOREIGN<\/span> <span class=\"token keyword\">KEY<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"authorId\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token keyword\">REFERENCES<\/span> <span class=\"token string\">\"User\"<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"id\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">ON<\/span> <span class=\"token keyword\">DELETE<\/span> <span class=\"token keyword\">SET<\/span> <span class=\"token boolean\">NULL<\/span> <span class=\"token keyword\">ON<\/span> <span class=\"token keyword\">UPDATE<\/span> <span class=\"token keyword\">CASCADE<\/span><span class=\"token punctuation\">;<\/span>\r\n<\/code><\/pre>\n<p>prisma migrate dev\u30b3\u30de\u30f3\u30c9\u306b&#8211;create-only\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8ffd\u52a0\u3059\u308c\u3070\u3001\u751f\u6210\u3055\u308c\u305fSQL\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30d5\u30a1\u30a4\u30eb\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30c8\u30ea\u30ac\u30fc\u3092\u8a2d\u5b9a\u3057\u305f\u308a\u3001\u57fa\u306b\u306a\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4ed6\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001Prisma\u30b9\u30ad\u30fc\u30de\u3067\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u3001Prisma Migrate\u3092\u4f7f\u7528\u3057\u3066\u5bfe\u5fdc\u3059\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bPrisma Client\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d74 \u2013 \u30d7\u30ec\u30fc\u30f3\u30b9\u30af\u30ea\u30d7\u30c8\u3067Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30af\u30a8\u30ea\u3092\u63a2\u7d22\u3059\u308b\u3002<\/h2>\n<p>Prisma Client\u306f\u3001Node.js\u3084TypeScript\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u8aad\u307f\u66f8\u304d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u3001\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u578b\u5b89\u5168\u306a\u30af\u30a8\u30ea\u30d3\u30eb\u30c0\u30fc\u3067\u3059\u3002\u3053\u308c\u306f\u3001REST API\u30eb\u30fc\u30c8\u5185\u3067\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u306b\u4f7f\u7528\u3055\u308c\u3001\u5f93\u6765\u306eORM\u3001\u30d7\u30ec\u30fc\u30f3SQL\u30af\u30a8\u30ea\u3001\u30ab\u30b9\u30bf\u30e0\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u30ec\u30a4\u30e4\u3001\u307e\u305f\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u9023\u643a\u65b9\u6cd5\u3092\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u6bb5\u968e\u3067\u306f\u3001Prisma Client\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u305d\u308c\u3092\u4f7f\u7528\u3057\u3066\u9001\u4fe1\u3067\u304d\u308b\u30af\u30a8\u30ea\u306b\u6163\u308c\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067REST API\u306e\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3059\u308b\u524d\u306b\u3001\u30d7\u30ec\u30fc\u30f3\u3067\u5b9f\u884c\u53ef\u80fd\u306a\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3044\u304f\u3064\u304b\u306ePrisma Client\u30af\u30a8\u30ea\u3092\u63a2\u7d22\u3057\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001Prisma Client npm\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a9\u30eb\u30c0\u306bPrisma Client\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> <span class=\"token function\">install<\/span> @prisma\/client<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306b\u3001\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u300csrc\u300d\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">mkdir<\/span> src<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306bTypeScript\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3059\u3079\u3066\u306ePrisma Client\u306e\u30af\u30a8\u30ea\u306f\u3001\u30b3\u30fc\u30c9\u5185\u3067\u5f85\u6a5f\u3067\u304d\u308b\u30d7\u30ed\u30df\u30b9\u3092\u8fd4\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u30af\u30a8\u30ea\u3092\u975e\u540c\u671f\u95a2\u6570\u5185\u3067\u9001\u4fe1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>src\/index.ts \u30d5\u30a1\u30a4\u30eb\u306b\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u5185\u3067\u5b9f\u884c\u3055\u308c\u308b\u975e\u540c\u671f\u95a2\u6570\u3092\u6301\u3064\u3001\u4ee5\u4e0b\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308bindex.ts<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> PrismaClient <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'@prisma\/client'<\/span>\r\n\r\n<span class=\"token keyword\">const<\/span> prisma <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PrismaClient<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\n<span class=\"token keyword\">async<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token comment\">\/\/ ... your Prisma Client queries will go here<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n\r\n<span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\r\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">finally<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token function\">$disconnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u306f\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u306e\u7c21\u5358\u306a\u6982\u8981\u3067\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u4ee5\u524d\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f @prisma\/client npm \u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u3089 PrismaClient \u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u547c\u3073\u51fa\u3057\u3066\u3001prisma \u3068\u3044\u3046\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u53d6\u5f97\u3057\u3066 PrismaClient \u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>main \u3068\u3044\u3046\u975e\u540c\u671f\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u3053\u306b Prisma Client \u306e\u30af\u30a8\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>main \u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u3001\u6f5c\u5728\u7684\u306a\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u3001Prisma Client \u304c prisma.$disconnect() \u3067\u958b\u3044\u3066\u3044\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u3092\u78ba\u5b9f\u306b\u9589\u3058\u307e\u3059\u3002<\/ol>\n<p>\u30e1\u30a4\u30f3\u6a5f\u80fd\u304c\u63c3\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306bPrisma Client\u306e\u30af\u30a8\u30ea\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u884c\u3092async\u95a2\u6570\u5185\u306b\u542b\u3081\u308b\u3088\u3046\u306b\u3001index.ts\u3092\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u3001index.ts\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> PrismaClient <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'@prisma\/client'<\/span>\r\n\r\n<span class=\"token keyword\">const<\/span> prisma <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PrismaClient<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\n<span class=\"token keyword\">async<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <mark><span class=\"token keyword\">const<\/span> newUser <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>user<span class=\"token punctuation\">.<\/span><span class=\"token function\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark>data<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark>name<span class=\"token operator\">:<\/span> <span class=\"token string\">'Alice'<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark>email<span class=\"token operator\">:<\/span> <span class=\"token string\">'alice@prisma.io'<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark>posts<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n        <mark>create<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark>title<span class=\"token operator\">:<\/span> <span class=\"token string\">'Hello World'<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark><span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'Created new user: '<\/span><span class=\"token punctuation\">,<\/span> newUser<span class=\"token punctuation\">)<\/span><\/mark>\r\n\r\n  <mark><span class=\"token keyword\">const<\/span> allUsers <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>user<span class=\"token punctuation\">.<\/span><span class=\"token function\">findMany<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark>include<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> posts<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark><span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'All users: '<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark><span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">dir<\/span><span class=\"token punctuation\">(<\/span>allUsers<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span> depth<span class=\"token operator\">:<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n<span class=\"token punctuation\">}<\/span>\r\n\r\n<span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\r\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n  <span class=\"token punctuation\">.<\/span><span class=\"token function\">finally<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token function\">$disconnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30d7\u30ea\u30ba\u30de\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30af\u30a8\u30ea\u30922\u3064\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>create: Creates a new User record. You use a nested write query to create both a User and Post record in the same query.<\/li>\n<li>findMany: Reads all existing User records from the database. You provide the include option that additionally loads the related Post records for each User record.<\/li>\n<\/ul>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3001\u9589\u3058\u308b\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx ts-node src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u5185\u5bb9\u304c\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Created new user: { id: 1, email: &#8216;alice@prisma.io&#8217;, name: &#8216;Alice&#8217; } [ { id: 1, email: &#8216;alice@prisma.io&#8217;, name: &#8216;Alice&#8217;, posts: [ { id: 1, title: &#8216;Hello World&#8217;, content: null, published: false, authorId: 1 } ] }<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306eGUI\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001User\u30c6\u30fc\u30d6\u30eb\u3068Post\u30c6\u30fc\u30d6\u30eb\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u3001\u30c7\u30fc\u30bf\u304c\u4f5c\u6210\u3055\u308c\u305f\u3053\u3068\u3092\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u306f\u3001npx prisma studio\u3092\u5b9f\u884c\u3057\u3066\u3001Prisma Studio\u3067\u30c7\u30fc\u30bf\u3092\u8abf\u67fb\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/div>\n<\/div>\n<p>\u4eca\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067Prisma Client\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u3068\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u6b8b\u308a\u306e\u624b\u9806\u3067\u306f\u3001\u30b5\u30f3\u30d7\u30ebREST API\u306e\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d75 \u2014 \u6700\u521d\u306eREST API\u30eb\u30fc\u30c8\u306e\u5b9f\u88c5<\/h2>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306bExpress\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002Express\u306fNode.js\u3067\u3088\u304f\u4f7f\u308f\u308c\u308b\u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3001\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067REST API\u306e\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u6700\u521d\u306b\u5b9f\u88c5\u3059\u308b\u30eb\u30fc\u30c8\u306f\u3001GET\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066API\u304b\u3089\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3082\u306e\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u306fPrisma Client\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066Express\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> <span class=\"token function\">install<\/span> express<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>TypeScript\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u958b\u767a\u4f9d\u5b58\u95a2\u4fc2\u3068\u3057\u3066\u8a72\u5f53\u3059\u308b\u578b\u3082\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u3092\u884c\u3046\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> <span class=\"token function\">install<\/span> @types\/express &#8211;save-dev<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4f9d\u5b58\u95a2\u4fc2\u304c\u6574\u3063\u3066\u3044\u308b\u72b6\u614b\u3067\u3001Express\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3042\u306a\u305f\u306e\u30e1\u30a4\u30f3\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u3082\u3046\u4e00\u5ea6\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>index.ts\u306e\u30b3\u30fc\u30c9\u3092\u3059\u3079\u3066\u524a\u9664\u3057\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u3063\u3066REST API\u3092\u958b\u59cb\u3059\u308b\u305f\u3081\u306b\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u5185\u306eindex.ts<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> PrismaClient <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">'@prisma\/client'<\/span>\r\n<span class=\"token keyword\">import<\/span> express <span class=\"token keyword\">from<\/span> <span class=\"token string\">'express'<\/span>\r\n\r\n<span class=\"token keyword\">const<\/span> prisma <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PrismaClient<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token keyword\">const<\/span> app <span class=\"token operator\">=<\/span> <span class=\"token function\">express<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\napp<span class=\"token punctuation\">.<\/span><span class=\"token function\">use<\/span><span class=\"token punctuation\">(<\/span>express<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\n<span class=\"token comment\">\/\/ ... your REST API routes will go here<\/span>\r\n\r\napp<span class=\"token punctuation\">.<\/span><span class=\"token function\">listen<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span>\r\n  <span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'REST API server ready at: http:\/\/localhost:3000'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u3061\u3089\u304c\u30b3\u30fc\u30c9\u306e\u7c21\u5358\u306a\u89e3\u8aac\u3067\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u4ee5\u4e0b\u306e\u6587\u3092\u65e5\u672c\u8a9e\u3067\u81ea\u7136\u306b\u8a00\u3044\u63db\u3048\u307e\u3059\u30021\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u5927\u4e08\u592b\u3067\u3059\uff1a<\/ol>\n<\/li>\n<\/ol>\n<p>\u3042\u306a\u305f\u306fPrismaClient\u3068express\u3092\u305d\u308c\u305e\u308c\u306enpm\u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u3089\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<br \/>\n\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u547c\u3073\u51fa\u3057\u3066PrismaClient\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3057\u3001prisma\u3068\u3044\u3046\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<br \/>\nexpress()\u3092\u547c\u3073\u51fa\u3057\u3066Express\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\nexpress.json()\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u8ffd\u52a0\u3057\u3066\u3001Express\u3067JSON\u30c7\u30fc\u30bf\u3092\u6b63\u3057\u304f\u51e6\u7406\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<br \/>\n\u30b5\u30fc\u30d0\u30fc\u3092\u30dd\u30fc\u30c83000\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p>\u4eca\u306f\u6700\u521d\u306e\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002app.use\u3068app.listen\u306e\u9593\u306b\u3001\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u90e8\u5206\u3092\u8ffd\u52a0\u3057\u3066\u3001app.get\u30b3\u30fc\u30eb\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u5165\u3063\u3066\u3044\u308b\u5834\u6240\u306f\u3001my-blog\/src\/index.ts\u3067\u3059\u3002<\/div>\n<pre class=\"post-pre\"><code><span class=\"token punctuation\">.<\/span> <span class=\"token punctuation\">.<\/span> <span class=\"token punctuation\">.<\/span>\r\napp<span class=\"token punctuation\">.<\/span><span class=\"token function\">use<\/span><span class=\"token punctuation\">(<\/span>express<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\n<mark>app<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'\/users'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span>req<span class=\"token punctuation\">,<\/span> res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> users <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>user<span class=\"token punctuation\">.<\/span><span class=\"token function\">findMany<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark>res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span>users<span class=\"token punctuation\">)<\/span><\/mark>\r\n<mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n\r\napp<span class=\"token punctuation\">.<\/span><span class=\"token function\">listen<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span>\r\n<span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'REST API server ready at: http:\/\/localhost:3000'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u305f\u3089\u3001\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30fc\u30ab\u30eb\u306e\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx ts-node src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u51fa\u529b\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>REST API server ready at: http:\/\/localhost:3000<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u300c\/users\u300d\u30eb\u30fc\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3001\u30d6\u30e9\u30a6\u30b6\u3092http:\/\/localhost:3000\/users\u307e\u305f\u306f\u4ed6\u306eHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u5411\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u30d9\u30fc\u30b9\u306eHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3042\u308bcurl\u3092\u4f7f\u7528\u3057\u3066\u3001\u3059\u3079\u3066\u306eREST API\u30eb\u30fc\u30c8\u3092\u30c6\u30b9\u30c8\u3057\u307e\u3059\u3002<\/p>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1aGUI\u30d9\u30fc\u30b9\u306eHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408\u306f\u3001Hoppscotch\u3084Postman\u306a\u3069\u306e\u4ee3\u66ff\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/div>\n<\/div>\n<p>\u81ea\u5206\u306e\u30eb\u30fc\u30c8\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u3001\u65b0\u3057\u3044\u30bf\u30fc\u30df\u30ca\u30eb\u30a6\u30a3\u30f3\u30c9\u30a6\u307e\u305f\u306f\u30bf\u30d6\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\uff08\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u306e\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u304c\u7d9a\u884c\u3055\u308c\u307e\u3059\uff09\u3002\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">curl<\/span> http:\/\/localhost:3000\/users<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u524d\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u4f5c\u6210\u3057\u305f\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>[{&#8220;id&#8221;:1,&#8221;email&#8221;:&#8221;alice@prisma.io&#8221;,&#8221;name&#8221;:&#8221;Alice&#8221;}]<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4eca\u56de\u306f\u3001\/users\u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u306b\u304a\u3044\u3066\u3001findMany\u547c\u3073\u51fa\u3057\u306binclude\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u6e21\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u6295\u7a3f\u306e\u914d\u5217\u306f\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n<p>\u3042\u306a\u305f\u306f\u6700\u521d\u306eREST API\u30eb\u30fc\u30c8\u3092\/users\u306b\u5b9f\u88c5\u3057\u307e\u3057\u305f\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001API\u306b\u3055\u3089\u306a\u308b\u6a5f\u80fd\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u6b8b\u308a\u306eREST API\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d76- \u6b8b\u308a\u306eREST API\u30eb\u30fc\u30c8\u306e\u5b9f\u88c5<\/h2>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u6b8b\u308a\u306e\u30d6\u30ed\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eREST API\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002\u6700\u7d42\u7684\u306b\u306f\u3001\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306f\u3055\u307e\u3056\u307e\u306aGET\u3001POST\u3001PUT\u3001DELETE\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3057\u307e\u3059\u3002<\/p>\n<p>\u5b9f\u88c5\u3059\u308b\u30eb\u30fc\u30c8\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n<div>\n<div class=\"post-table\">\n<table>\n<thead>\n<tr>\n<th>HTTP Method<\/th>\n<th>Route<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>GET<\/code><\/td>\n<td><code>\/feed<\/code><\/td>\n<td>Fetches all <em>published<\/em> posts.<\/td>\n<\/tr>\n<tr>\n<td><code>GET<\/code><\/td>\n<td><code>\/post\/:id<\/code><\/td>\n<td>Fetches a specific post by its ID.<\/td>\n<\/tr>\n<tr>\n<td><code>POST<\/code><\/td>\n<td><code>\/user<\/code><\/td>\n<td>Creates a new user.<\/td>\n<\/tr>\n<tr>\n<td><code>POST<\/code><\/td>\n<td><code>\/post<\/code><\/td>\n<td>Creates a new post (as a <em>draft<\/em>).<\/td>\n<\/tr>\n<tr>\n<td><code>PUT<\/code><\/td>\n<td><code>\/post\/publish\/:id<\/code><\/td>\n<td>Sets the <code>published<\/code> field of a post to <code>true<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><code>DELETE<\/code><\/td>\n<td><code>post\/:id<\/code><\/td>\n<td>Deletes a post by its ID.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u6700\u521d\u306b\u3001\u6b8b\u308a\u306e2\u3064\u306eGET\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<p>\u30ad\u30fc\u30dc\u30fc\u30c9\u3067CTRL+C\u3092\u62bc\u3057\u3066\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306b\u3001\u7de8\u96c6\u306e\u305f\u3081\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u305f\u5f8c\u3001index.ts\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306b\u3001\/app.get\u30e6\u30fc\u30b6\u30fc\u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u306e\u5f8c\u306b\u3001\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u884c\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u5834\u6240\u306f\u3001my-blog\/src\/index.ts\u3067\u3059\u3002<\/div>\n<pre class=\"post-pre\"><code><span class=\"token punctuation\">.<\/span> <span class=\"token punctuation\">.<\/span> <span class=\"token punctuation\">.<\/span>\r\n\r\n<mark>app<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'\/feed'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span>req<span class=\"token punctuation\">,<\/span> res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> posts <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>post<span class=\"token punctuation\">.<\/span><span class=\"token function\">findMany<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark>where<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> published<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark>include<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> author<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark>res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span>posts<span class=\"token punctuation\">)<\/span><\/mark>\r\n<mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n\r\n<mark>app<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">\/post\/:id<\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span>req<span class=\"token punctuation\">,<\/span> res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> id <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> req<span class=\"token punctuation\">.<\/span>params<\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> post <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>post<span class=\"token punctuation\">.<\/span><span class=\"token function\">findUnique<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark>where<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> id<span class=\"token operator\">:<\/span> <span class=\"token function\">Number<\/span><span class=\"token punctuation\">(<\/span>id<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark>res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span>post<span class=\"token punctuation\">)<\/span><\/mark>\r\n<mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n\r\napp<span class=\"token punctuation\">.<\/span><span class=\"token function\">listen<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span>\r\n  <span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'REST API server ready at: http:\/\/localhost:3000'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u306f\u30012\u3064\u306eGET\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u305f\u3081\u306eAPI\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>\/feed: Returns a list of published posts.<\/li>\n<li>\/post\/:id: Returns a specific post by its ID.<\/li>\n<\/ul>\n<p>\u30d7\u30ea\u30ba\u30de \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u4e21\u65b9\u306e\u5b9f\u88c5\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\/feed \u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u3067\u306f\u3001\u30d7\u30ea\u30ba\u30de \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u9001\u4fe1\u3059\u308b\u30af\u30a8\u30ea\u306f\u3001published \u5217\u304c true \u306e\u3059\u3079\u3066\u306e\u6295\u7a3f\u30ec\u30b3\u30fc\u30c9\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u8fd4\u3055\u308c\u305f\u5404\u6295\u7a3f\u306b\u95a2\u9023\u3059\u308b\u8457\u8005\u60c5\u5831\u3082\u30d5\u30a7\u30c3\u30c1\u3059\u308b\u305f\u3081\u306b\u3001\u30d7\u30ea\u30ba\u30de \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30af\u30a8\u30ea\u306b\u306f include \u3082\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\/post\/:id \u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u3067\u306f\u3001URL\u306e\u30d1\u30b9\u304b\u3089\u53d6\u5f97\u3057\u305fID\u3092\u7528\u3044\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u7279\u5b9a\u306e\u6295\u7a3f\u30ec\u30b3\u30fc\u30c9\u3092\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u6b21\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30b5\u30fc\u30d0\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx ts-node src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\/\u30d5\u30a3\u30fc\u30c9\u30eb\u30fc\u30c8\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u30012\u756a\u76ee\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u30bb\u30c3\u30b7\u30e7\u30f3\u3067\u6b21\u306ecurl\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">curl<\/span> http:\/\/localhost:3000\/feed<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u307e\u3060\u6295\u7a3f\u304c\u306a\u3044\u305f\u3081\u3001\u5fdc\u7b54\u306f\u7a7a\u306e\u914d\u5217\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>[]<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\/post\/:id \u30eb\u30fc\u30c8\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306ecurl\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">curl<\/span> http:\/\/localhost:3000\/post\/1<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6700\u521d\u306b\u4f5c\u6210\u3057\u305f\u6295\u7a3f\u3092\u8fd4\u3059\u30b3\u30de\u30f3\u30c9\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>{&#8220;id&#8221;:1,&#8221;title&#8221;:&#8221;Hello World&#8221;,&#8221;content&#8221;:null,&#8221;published&#8221;:false,&#8221;authorId&#8221;:1}<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306b\u30012\u3064\u306ePOST\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002\u5143\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u30bb\u30c3\u30b7\u30e7\u30f3\u3067\u3001CTRL+C\u3067\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3057\u3001\u305d\u306e\u5f8c\u3001index.ts\u3092\u7de8\u96c6\u3059\u308b\u305f\u3081\u306b\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4e09\u3064\u306eGET\u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u306e\u5f8c\u306b\u3001index.ts\u306b\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u884c\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306eindex.ts\u30d5\u30a1\u30a4\u30eb\u3002<\/div>\n<pre class=\"post-pre\"><code><span class=\"token punctuation\">.<\/span> <span class=\"token punctuation\">.<\/span> <span class=\"token punctuation\">.<\/span>\r\n\r\n<mark>app<span class=\"token punctuation\">.<\/span><span class=\"token function\">post<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">\/user<\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span>req<span class=\"token punctuation\">,<\/span> res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> result <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>user<span class=\"token punctuation\">.<\/span><span class=\"token function\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark>data<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token operator\">...<\/span>req<span class=\"token punctuation\">.<\/span>body <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark>res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span><\/mark>\r\n<mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n\r\n<mark>app<span class=\"token punctuation\">.<\/span><span class=\"token function\">post<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">\/post<\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span>req<span class=\"token punctuation\">,<\/span> res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> title<span class=\"token punctuation\">,<\/span> content<span class=\"token punctuation\">,<\/span> authorEmail <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> req<span class=\"token punctuation\">.<\/span>body<\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> result <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>post<span class=\"token punctuation\">.<\/span><span class=\"token function\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark>data<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark>title<span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark>content<span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark>published<span class=\"token operator\">:<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark>author<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> connect<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> email<span class=\"token operator\">:<\/span> authorEmail <span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark>res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span><\/mark>\r\n<mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n\r\napp<span class=\"token punctuation\">.<\/span><span class=\"token function\">listen<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span>\r\n  <span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'REST API server ready at: http:\/\/localhost:3000'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u306f\u30012\u3064\u306ePOST\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3059\u308bAPI\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>\/user: Creates a new user in the database.<\/li>\n<li>\/post: Creates a new post in the database.<\/li>\n<\/ul>\n<p>\u4ee5\u524d\u3068\u540c\u69d8\u306b\u3001Prisma Client\u306f\u4e21\u65b9\u306e\u5b9f\u88c5\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\/user\u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u3067\u306f\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30dc\u30c7\u30a3\u304b\u3089\u306e\u5024\u3092Prisma Client\u306ecreate\u30af\u30a8\u30ea\u306b\u6e21\u3057\u307e\u3059\u3002<\/p>\n<p>\u300c\/post\u300d\u30eb\u30fc\u30c8\u306f\u3088\u308a\u8907\u96d1\u3067\u3059\u3002HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30dc\u30c7\u30a3\u304b\u3089\u5024\u3092\u76f4\u63a5\u6e21\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u307e\u305a\u624b\u52d5\u3067\u305d\u308c\u3089\u3092\u62bd\u51fa\u3057\u3001Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30af\u30a8\u30ea\u306b\u6e21\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306eJSON\u306e\u69cb\u9020\u304cPrisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u671f\u5f85\u3059\u308b\u69cb\u9020\u3068\u4e00\u81f4\u3057\u306a\u3044\u305f\u3081\u3001\u671f\u5f85\u3055\u308c\u308b\u69cb\u9020\u3092\u624b\u52d5\u3067\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u4f5c\u696d\u304c\u7d42\u4e86\u3057\u305f\u3089\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u300c\u6b21\u306e\u624b\u9806\u3067\u30b5\u30fc\u30d0\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u300d<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx ts-node src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\/user \u30eb\u30fc\u30c8\u3092\u7d4c\u7531\u3057\u3066\u3001curl\u3067\u4ee5\u4e0b\u306ePOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">curl<\/span> <span class=\"token parameter variable\">-X<\/span> POST <span class=\"token parameter variable\">-H<\/span> <span class=\"token string\">&#8220;Content-Type: application\/json&#8221;<\/span> <span class=\"token parameter variable\">-d<\/span> <span class=\"token string\">&#8216;{&#8220;name&#8221;:&#8221;Bob&#8221;, &#8220;email&#8221;:&#8221;bob@prisma.io&#8221;}&#8217;<\/span> http:\/\/localhost:3000\/user<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u308c\u306b\u3088\u3063\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u304c\u4f5c\u6210\u3055\u308c\u3001\u4ee5\u4e0b\u306e\u51fa\u529b\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>{&#8220;id&#8221;:2,&#8221;email&#8221;:&#8221;bob@prisma.io&#8221;,&#8221;name&#8221;:&#8221;Bob&#8221;}<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u65b0\u3057\u3044\u6295\u7a3f\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\/post\u30eb\u30fc\u30c8\u3092\u4ecb\u3057\u3066\u6b21\u306ePOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092curl\u3067\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">curl<\/span> <span class=\"token parameter variable\">-X<\/span> POST <span class=\"token parameter variable\">-H<\/span> <span class=\"token string\">&#8220;Content-Type: application\/json&#8221;<\/span> <span class=\"token parameter variable\">-d<\/span> <span class=\"token string\">&#8216;{&#8220;title&#8221;:&#8221;I am Bob&#8221;, &#8220;authorEmail&#8221;:&#8221;bob@prisma.io&#8221;}&#8217;<\/span> http:\/\/localhost:3000\/post<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u65b0\u3057\u3044\u6295\u7a3f\u304c\u4f5c\u6210\u3055\u308c\u3001\u305d\u308c\u304c\u96fb\u5b50\u30e1\u30fc\u30ebbob@prisma.io\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u63a5\u7d9a\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u51fa\u529b\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>{&#8220;id&#8221;:2,&#8221;title&#8221;:&#8221;I am Bob&#8221;,&#8221;content&#8221;:null,&#8221;published&#8221;:false,&#8221;authorId&#8221;:2}<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6700\u5f8c\u306b\u3001PUT\u304a\u3088\u3073DELETE\u306e\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3057\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3067index.ts\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306b\u30012\u3064\u306e POST \u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u306b\u7d9a\u3044\u3066\u3001\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u30d6\u30ed\u30b0\u306e\u5834\u6240\u306f my-blog\/src\/index.ts \u3067\u3059\u3002<\/div>\n<pre class=\"post-pre\"><code><span class=\"token punctuation\">.<\/span> <span class=\"token punctuation\">.<\/span> <span class=\"token punctuation\">.<\/span>\r\n\r\n<mark>app<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'\/post\/publish\/:id'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span>req<span class=\"token punctuation\">,<\/span> res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> id <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> req<span class=\"token punctuation\">.<\/span>params<\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> post <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>post<span class=\"token punctuation\">.<\/span><span class=\"token function\">update<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark>where<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> id<span class=\"token operator\">:<\/span> <span class=\"token function\">Number<\/span><span class=\"token punctuation\">(<\/span>id<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark>data<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> published<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark>res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span>post<span class=\"token punctuation\">)<\/span><\/mark>\r\n<mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n\r\n<mark>app<span class=\"token punctuation\">.<\/span><span class=\"token function\">delete<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">\/post\/:id<\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">async<\/span> <span class=\"token punctuation\">(<\/span>req<span class=\"token punctuation\">,<\/span> res<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> id <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> req<span class=\"token punctuation\">.<\/span>params<\/mark>\r\n  <mark><span class=\"token keyword\">const<\/span> post <span class=\"token operator\">=<\/span> <span class=\"token keyword\">await<\/span> prisma<span class=\"token punctuation\">.<\/span>post<span class=\"token punctuation\">.<\/span><span class=\"token function\">delete<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark>where<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> id<span class=\"token operator\">:<\/span> <span class=\"token function\">Number<\/span><span class=\"token punctuation\">(<\/span>id<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n  <mark>res<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span>post<span class=\"token punctuation\">)<\/span><\/mark>\r\n<mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n\r\napp<span class=\"token punctuation\">.<\/span><span class=\"token function\">listen<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=&gt;<\/span>\r\n  <span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'REST API server ready at: http:\/\/localhost:3000'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u306f\u30011\u3064\u306ePUT\u30ea\u30af\u30a8\u30b9\u30c8\u30681\u3064\u306eDELETE\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u305f\u3081\u306eAPI\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>\/post\/publish\/:id (PUT): Publishes a post by its ID.<\/li>\n<li>\/post\/:id (DELETE): Deletes a post by its ID.<\/li>\n<\/ul>\n<p>\u518d\u5ea6\u3001\u4e21\u65b9\u306e\u5b9f\u88c5\u3067Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\/post\/publish\/:id\u306e\u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u3067\u306f\u3001\u516c\u958b\u3059\u308b\u6295\u7a3f\u306eID\u3092URL\u304b\u3089\u53d6\u5f97\u3057\u3001Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u66f4\u65b0\u30af\u30a8\u30ea\u306b\u6e21\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u6295\u7a3f\u3092\u524a\u9664\u3059\u308b\/post\/:id\u306e\u30eb\u30fc\u30c8\u306e\u5b9f\u88c5\u3082\u3001URL\u304b\u3089\u6295\u7a3f\u306eID\u3092\u53d6\u5f97\u3057\u3001Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u524a\u9664\u30af\u30a8\u30ea\u306b\u6e21\u3057\u307e\u3059\u3002<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002 (\u30d5\u30a1\u30a4\u30eb\u3092\u307b\u305e\u3093\u3057\u3066\u3057\u3085\u3046\u308a\u3087\u3046\u3057\u3066\u304f\u3060\u3055\u3044\u3002)<\/p>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066\u30b5\u30fc\u30d0\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx ts-node src\/index.ts<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306ecurl\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001PUT\u30eb\u30fc\u30c8\u3092\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">curl<\/span> <span class=\"token parameter variable\">-X<\/span> PUT http:\/\/localhost:3000\/post\/publish\/2<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001ID\u5024\u304c2\u306e\u6295\u7a3f\u304c\u516c\u958b\u3055\u308c\u307e\u3059\u3002\u3082\u3057\/feed\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u518d\u9001\u4fe1\u3059\u308b\u3068\u3001\u3053\u306e\u6295\u7a3f\u306f\u30ec\u30b9\u30dd\u30f3\u30b9\u306b\u542b\u307e\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u6700\u7d42\u7684\u306b\u3001\u4ee5\u4e0b\u306ecurl\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066DELETE\u30eb\u30fc\u30c8\u3092\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">curl<\/span> <span class=\"token parameter variable\">-X<\/span> DELETE http:\/\/localhost:3000\/post\/1<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306ecurl\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001ID\u5024\u304c1\u306e\u6295\u7a3f\u3092\u524a\u9664\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3067\u3059\u3002\u3053\u306eID\u306e\u6295\u7a3f\u304c\u524a\u9664\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306ecurl\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\/post\/1\u30eb\u30fc\u30c8\u3078\u306eGET\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u518d\u9001\u4fe1\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">curl<\/span> http:\/\/localhost:3000\/post\/1<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30d6\u30ed\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6b8b\u308a\u306eREST API\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u307e\u3057\u305f\u3002API\u306f\u4eca\u3084\u3055\u307e\u3056\u307e\u306aGET\u3001POST\u3001PUT\u3001DELETE\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5fdc\u7b54\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u66f8\u304d\u6a5f\u80fd\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h2>\u7d50\u8ad6<\/h2>\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u30b5\u30f3\u30d7\u30eb\u306e\u30d6\u30ed\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u6295\u7a3f\u30c7\u30fc\u30bf\u3092\u4f5c\u6210\u3001\u8aad\u307f\u53d6\u308a\u3001\u66f4\u65b0\u3001\u524a\u9664\u3059\u308b\u305f\u3081\u306e\u3055\u307e\u3056\u307e\u306a\u30eb\u30fc\u30c8\u3092\u6301\u3064REST API\u30b5\u30fc\u30d0\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002API\u30eb\u30fc\u30c8\u5185\u3067\u306f\u3001Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u5fdc\u3059\u308b\u30af\u30a8\u30ea\u3092\u9001\u4fe1\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3068\u3057\u3066\u3001Prisma Migrate\u3092\u4f7f\u3063\u3066\u8ffd\u52a0\u306eAPI\u30eb\u30fc\u30c8\u3092\u5b9f\u88c5\u3057\u305f\u308a\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u62e1\u5f35\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Prisma\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u8a2a\u308c\u3066\u3001Prisma\u306e\u3055\u307e\u3056\u307e\u306a\u5074\u9762\u3092\u5b66\u3073\u3001prisma-examples\u30ea\u30dd\u30b8\u30c8\u30ea\u3067GraphQL\u3084gRPC API\u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u305f\u5b9f\u884c\u53ef\u80fd\u306a\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u63a2\u7d22\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8457\u8005\u306f\u3001Write for Donations\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4e00\u74b0\u3068\u3057\u3066\u3001\u5bc4\u4ed8\u3092\u53d7\u3051\u53d6\u308b\u305f\u3081\u306bDiversity in Tech Fund\u3068Tech Education Fund\u3092\u9078\u3073\u307e\u3057\u305f\u3002 \u30a4\u30f3\u30c8\u30ed\u30c0\u30af\u30b7\u30e7\u30f3 Prism [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[14,26],"class_list":["post-461","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-14","tag-26"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5 - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/ja\/blog\/prisma\u3068postgresql\u3092\u4f7f\u7528\u3057\u3066rest-api\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5\" \/>\n<meta property=\"og:description\" content=\"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/ja\/blog\/prisma\u3068postgresql\u3092\u4f7f\u7528\u3057\u3066rest-api\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-01T07:11:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T14:46:24+00:00\" \/>\n<meta name=\"author\" content=\"\u7dbe\u4e43, \u4e00\u5e0c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u7dbe\u4e43, \u4e00\u5e0c\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"44\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/\",\"name\":\"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\"},\"datePublished\":\"2022-09-01T07:11:01+00:00\",\"dateModified\":\"2025-07-31T14:46:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/601389077b7f4e4ad6115428e3b73bff\"},\"description\":\"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/ja\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/601389077b7f4e4ad6115428e3b73bff\",\"name\":\"\u7dbe\u4e43, \u4e00\u5e0c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2228fe98b71141214fb24fb1b5ae44f99bdfa0602bbd89b351f2acd49ece862d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2228fe98b71141214fb24fb1b5ae44f99bdfa0602bbd89b351f2acd49ece862d?s=96&d=mm&r=g\",\"caption\":\"\u7dbe\u4e43, \u4e00\u5e0c\"},\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/author\/ayanokazuki\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5 - Blog - Silicon Cloud","description":"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/ja\/blog\/prisma\u3068postgresql\u3092\u4f7f\u7528\u3057\u3066rest-api\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\/","og_locale":"ja_JP","og_type":"article","og_title":"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5","og_description":"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","og_url":"https:\/\/www.silicloud.com\/ja\/blog\/prisma\u3068postgresql\u3092\u4f7f\u7528\u3057\u3066rest-api\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-09-01T07:11:01+00:00","article_modified_time":"2025-07-31T14:46:24+00:00","author":"\u7dbe\u4e43, \u4e00\u5e0c","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"\u7dbe\u4e43, \u4e00\u5e0c","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"44\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/","url":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/","name":"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website"},"datePublished":"2022-09-01T07:11:01+00:00","dateModified":"2025-07-31T14:46:24+00:00","author":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/601389077b7f4e4ad6115428e3b73bff"},"description":"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/ja\/blog\/"},{"@type":"ListItem","position":2,"name":"Prisma\u3068PostgreSQL\u3092\u4f7f\u7528\u3057\u3066REST API\u3092\u4f5c\u6210\u306e\u65b9\u6cd5"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website","url":"https:\/\/www.silicloud.com\/ja\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/601389077b7f4e4ad6115428e3b73bff","name":"\u7dbe\u4e43, \u4e00\u5e0c","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2228fe98b71141214fb24fb1b5ae44f99bdfa0602bbd89b351f2acd49ece862d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2228fe98b71141214fb24fb1b5ae44f99bdfa0602bbd89b351f2acd49ece862d?s=96&d=mm&r=g","caption":"\u7dbe\u4e43, \u4e00\u5e0c"},"url":"https:\/\/www.silicloud.com\/ja\/blog\/author\/ayanokazuki\/"},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%81%a8postgresql%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6rest-api%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/comments?post=461"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/461\/revisions"}],"predecessor-version":[{"id":325796,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/461\/revisions\/325796"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/media?parent=461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/categories?post=461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/tags?post=461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}