Skip to content

Commit 9be0ad1

Browse files
committed
πŸŽ„Update The Theme
1 parent 0f362a2 commit 9be0ad1

12 files changed

Lines changed: 1535 additions & 1520 deletions

File tree

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
<!doctype html><html lang=en-US><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Cloud Native Go Tutorials for Everyone!"><meta name=author content="Dumindu Madunuwan"><meta name=theme-color content="#ffffff" media="(prefers-color-scheme: light)"><meta name=theme-color content="#101010" media="(prefers-color-scheme: dark)"><title>Building a Dockerized RESTful API application in Go Β· Learning Cloud Native Go</title>
2-
<link rel=canonical href=https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/><link rel=stylesheet href=/assets/css/docs.min.8e9408609771a441499aa5571a4585b0ca95783b842d5c758af5eef1457b0fe0.css integrity><link rel=manifest href=/manifest.json><link rel=icon href=/favicon/favicon.ico><link rel=icon href=/favicon/favicon-16x16.png sizes=16x16 type=image/png><link rel=icon href=/favicon/favicon-32x32.png sizes=32x32 type=image/png><link rel=apple-touch-icon href=/favicon/apple-touch-icon.png sizes=180x180><script async src="https://www.googletagmanager.com/gtag/js?id=G-H3GD0XFJ42"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-H3GD0XFJ42")</script><meta property="og:title" content="Building a Dockerized RESTful API application in Go"><meta property="og:description" content="Cloud Native Go Tutorials for Everyone!"><meta property="og:type" content="article"><meta property="og:url" content="https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/"><meta property="og:image" content="https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/og.png"><meta property="og:site_name" content="Learning Cloud Native Go"><meta name=twitter:card content="summary_large_image"><meta name=twitter:title content="Building a Dockerized RESTful API application in Go"><meta name=twitter:description content="Cloud Native Go Tutorials for Everyone!"><meta name=twitter:image content="https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/og.png"><script type=application/ld+json>{"@context":"https://schema.org","@type":"Article","headline":"Building a Dockerized RESTful API application in Go","description":"Cloud Native Go Tutorials for Everyone!","image":"https:\/\/learning-cloud-native-go.github.io\/docs\/building-a-dockerized-restful-api-application-in-go\/og.png","author":{"@type":"Person","name":"map[name:Dumindu Madunuwan url:https:\/\/github.com\/dumindu]"},"publisher":{"@type":"Organization","name":"Learning Cloud Native Go","logo":{"@type":"ImageObject","url":"https:\/\/learning-cloud-native-go.github.io\/"}},"datePublished":"0001-01-01","dateModified":"2024-01-21","mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/learning-cloud-native-go.github.io\/docs\/building-a-dockerized-restful-api-application-in-go\/"}}</script></head><body><div id=outer-wrapper><div id=aside-wrapper><aside><div><button class=btn><i>❌</i>Close</button></div><a href=https://learning-cloud-native-go.github.io/ class=site-logo>Learning Cloud Native Go</a><nav role=navigation><details open><summary>Documentation</summary><ul><li><a href=https://learning-cloud-native-go.github.io/docs/overview/>Overview</a></li></ul></details><details open><summary>Building a Dockerized RESTful API</summary><ul><li><a class=active href=https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/>Building a Dockerized RESTful API application in Go</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/hello-world-server/>Hello World server</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/database-and-migrations/>Database and migrations</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/configurations/>Configurations</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/routes-and-openapi-specification/>Routes and OpenAPI specification</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/repository/>Repository</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/error-handling/>Error handling</a></li></ul></details></nav></aside></div><div id=content-wrapper><header><a href=https://learning-cloud-native-go.github.io/ class=site-logo>Learning Cloud Native Go</a></header><main><article><nav><button class=btn><i>⬅️</i> On this section</button>
3-
<button class=btn>On this page <i>➑️</i></button></nav><header><h1>Building a Dockerized RESTful API application in Go</h1><p></p></header><div id=article-body><blockquote class=info><p><strong>πŸ‘¨β€πŸ«</strong> <strong>In this series&mldr;</strong></p><p>In this series, we are going to build a Dockerized Go RESTful API for a bookshelf with these steps:</p><ul><li>Create a basic server using Go&rsquo;s <code>net/http</code> package and Dockerize it.</li><li>Add the database, SQL migration files, and create the <code>migrate</code> app to run these migration files.</li><li>Implement dynamic application configurations via environment variables.</li><li>Integrate Chi, add initial API routes, and generate OpenAPI specifications.</li><li>Integrate GORM, implement repository functions with tests, and invoke repository from the handlers.</li><li>Enhance error handling and integrate Validator v10 for form validations.</li><li>Implement error logs and request logs via Zerolog.</li></ul></blockquote><h2 id=-the-codebase>πŸ“¦ The codebase</h2><p>The completed API application supports the following API endpoints.</p><table><thead><tr><th>Name</th><th>HTTP Method</th><th>Route</th></tr></thead><tbody><tr><td>Health</td><td>GET</td><td>/livez</td></tr><tr><td>List Books</td><td>GET</td><td>/v1/books</td></tr><tr><td>Create Book</td><td>POST</td><td>/v1/books</td></tr><tr><td>Read Book</td><td>GET</td><td>/v1/books/{id}</td></tr><tr><td>Update Book</td><td>PUT</td><td>/v1/books/{id}</td></tr><tr><td>Delete Book</td><td>DELETE</td><td>/v1/books/{id}</td></tr></tbody></table><p>The sourcecode of the completed project can be found in <a href=http://github.com/learning-cloud-native-go/myapp target=_blank>learning-cloud-native-go/myapp</a> GitHub repository.</p><p>OK, Let&rsquo;s get it started!</p></div><footer><time datetime=2024-01-21><i>πŸ•’</i> Updated: 2024-01-21</time>
4-
<a href=https://learning-cloud-native-go.github.io/docs/overview/><i>οΉ€</i> Previous</a>
5-
<a href=https://learning-cloud-native-go.github.io/docs/hello-world-server/>Next <i>οΉ₯</i></a></footer></article><aside><div><button class=btn><i>❌</i>Close</button></div><strong>On this page</strong><nav id=TableOfContents><ul><li><a href=#-the-codebase>πŸ“¦ The codebase</a></li></ul></nav></aside></main><footer><div><i>πŸ§‘β€πŸ’»</i>Built by and copyright<a href=https://github.com/dumindu target=_blank>Dumindu Madunuwan</a><i>πŸ“…</i> 2019-2025<i>πŸš€</i> <a href=https://github.com/learning-cloud-native-go target=_blank>GitHub</a></div><div><button class=btn><i>β˜€οΈ</i><i>⁄</i><i>πŸŒ‘</i></button></div></footer></div></div><div id=body-model-outer></div><script type=text/javascript src=/assets/js/docs.min.12ffdc25c0149ef34e761ee54587f2aae17affcb8375298ad2180851930cb142.js integrity></script></body></html>
1+
<!doctype html><html lang=en-US><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Cloud Native Go Tutorials for Everyone!"><meta name=author content="Dumindu Madunuwan"><meta name=theme-color content="#ffffff" media="(prefers-color-scheme: light)"><meta name=theme-color content="#101010" media="(prefers-color-scheme: dark)"><title>Building a Dockerized RESTful API application in Go · Learning Cloud Native Go</title><link rel=canonical href=https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/><link rel=stylesheet href=/assets/css/docs.min.80f8327279817daa4da4a6824ddfeed423ae86fbbd5c77a6b96e67974a6f4131.css integrity><link rel=manifest href=/manifest.json><link rel=icon href=/favicon/favicon.ico><link rel=icon href=/favicon/favicon-16x16.png sizes=16x16 type=image/png><link rel=icon href=/favicon/favicon-32x32.png sizes=32x32 type=image/png><link rel=apple-touch-icon href=/favicon/apple-touch-icon.png sizes=180x180><script async src="https://www.googletagmanager.com/gtag/js?id=G-H3GD0XFJ42"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-H3GD0XFJ42")</script><meta property="og:title" content="Building a Dockerized RESTful API application in Go"><meta property="og:description" content="Building a Dockerized RESTful API application in Go - Cloud Native Go Tutorials for Everyone!"><meta property="og:type" content="article"><meta property="og:url" content="https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/"><meta property="og:image" content="https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/og.png"><meta property="og:site_name" content="Learning Cloud Native Go"><meta name=twitter:card content="summary_large_image"><meta name=twitter:title content="Building a Dockerized RESTful API application in Go"><meta name=twitter:description content="Building a Dockerized RESTful API application in Go - Cloud Native Go Tutorials for Everyone!"><meta name=twitter:image content="https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/og.png"><script type=application/ld+json>{"@context":"https://schema.org","@type":"Article","headline":"Building a Dockerized RESTful API application in Go","description":"Building a Dockerized RESTful API application in Go - Cloud Native Go Tutorials for Everyone!","image":"https:\/\/learning-cloud-native-go.github.io\/docs\/building-a-dockerized-restful-api-application-in-go\/og.png","author":{"@type":"Person","name":"Dumindu Madunuwan","url":"https:\/\/github.com\/dumindu"},"publisher":{"@type":"Organization","name":"Learning Cloud Native Go","logo":{"@type":"ImageObject","url":"https:\/\/learning-cloud-native-go.github.io\/"}},"dateModified":"2024-01-21T18:12:51Z","mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/learning-cloud-native-go.github.io\/docs\/building-a-dockerized-restful-api-application-in-go\/"}}</script></head><body><div id=outer-wrapper><div id=aside-wrapper><aside><div><button class=btn><i>❌</i>Close</button></div><a href=https://learning-cloud-native-go.github.io/ class=site-logo>Learning Cloud Native Go</a><nav role=navigation><details open><summary>Documentation</summary><ul><li><a href=https://learning-cloud-native-go.github.io/docs/overview/>Overview</a></li></ul></details><details open><summary>Building a Dockerized RESTful API</summary><ul><li><a class=active href=https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/>Building a Dockerized RESTful API application in Go</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/hello-world-server/>Hello World server</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/database-and-migrations/>Database and migrations</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/configurations/>Configurations</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/routes-and-openapi-specification/>Routes and OpenAPI specification</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/repository/>Repository</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/error-handling/>Error handling</a></li></ul></details></nav></aside></div><div id=content-wrapper><header><a href=https://learning-cloud-native-go.github.io/ class=site-logo>Learning Cloud Native Go</a></header><nav role=navigation><select onchange="this.value&&(window.location.href=this.value)"><button>
2+
<selectedcontent></selectedcontent></button><option value=https://learning-cloud-native-go.github.io/><span aria-hidden><i aria-hidden>🏑 </i></span><span>Home</span></option><option value=https://learning-cloud-native-go.github.io/docs/ selected><span aria-hidden><i aria-hidden>πŸ“– </i></span><span>Documentation</span></option></select></nav><main><article><nav><button class=btn><i>⬅️</i> On this section</button>
3+
<button class=btn>On this page <i>➑️</i></button></nav><header><h1>Building a Dockerized RESTful API application in Go</h1></header><div id=article-body><blockquote class=info><p><strong>πŸ‘¨β€πŸ«</strong> <strong>In this series&mldr;</strong></p><p>In this series, we are going to build a Dockerized Go RESTful API for a bookshelf with these steps:</p><ul><li>Create a basic server using Go&rsquo;s <code>net/http</code> package and Dockerize it.</li><li>Add the database, SQL migration files, and create the <code>migrate</code> app to run these migration files.</li><li>Implement dynamic application configurations via environment variables.</li><li>Integrate Chi, add initial API routes, and generate OpenAPI specifications.</li><li>Integrate GORM, implement repository functions with tests, and invoke repository from the handlers.</li><li>Enhance error handling and integrate Validator v10 for form validations.</li><li>Implement error logs and request logs via Zerolog.</li></ul></blockquote><h2 id=-the-codebase>πŸ“¦ The codebase</h2><p>The completed API application supports the following API endpoints.</p><table><thead><tr><th>Name</th><th>HTTP Method</th><th>Route</th></tr></thead><tbody><tr><td>Health</td><td>GET</td><td>/livez</td></tr><tr><td>List Books</td><td>GET</td><td>/v1/books</td></tr><tr><td>Create Book</td><td>POST</td><td>/v1/books</td></tr><tr><td>Read Book</td><td>GET</td><td>/v1/books/{id}</td></tr><tr><td>Update Book</td><td>PUT</td><td>/v1/books/{id}</td></tr><tr><td>Delete Book</td><td>DELETE</td><td>/v1/books/{id}</td></tr></tbody></table><p>The sourcecode of the completed project can be found in <a href=http://github.com/learning-cloud-native-go/myapp target=_blank>learning-cloud-native-go/myapp</a> GitHub repository.</p><p>OK, Let&rsquo;s get it started!</p></div><footer><time datetime=2024-01-21><i>πŸ•’</i> Updated: 2024-01-21</time>
4+
<a href=https://learning-cloud-native-go.github.io/docs/overview/><i>&#8249;</i> Previous</a>
5+
<a href=https://learning-cloud-native-go.github.io/docs/hello-world-server/>Next <i>&#8250;</i></a></footer></article><aside><div><button class=btn><i>❌</i>Close</button></div><strong>On this page</strong><nav id=TableOfContents><ul><li><a href=#-the-codebase>πŸ“¦ The codebase</a></li></ul></nav></aside></main><footer><div><i>πŸ§‘β€πŸ’»</i>Built by and copyright<a href=https://github.com/dumindu target=_blank>Dumindu Madunuwan</a><i>πŸ“…</i> 2019-2025<i>πŸš€</i> <a href=https://github.com/learning-cloud-native-go target=_blank>GitHub</a></div><div><button class=btn><i>β˜€οΈ</i><i>⁄</i><i>πŸŒ‘</i></button></div></footer></div></div><div id=body-model-outer></div><script type=text/javascript src=/assets/js/docs.min.bb7187d7b0d361897c27b4f61653c7152f6c633ccc12981b2a0eca4a986cc54d.js integrity></script></body></html>

0 commit comments

Comments
Β (0)