<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Api on Blogfolio Najib</title>
		<link>https://najib.id/en/tags/api/</link>
		<description>Recent content in Api on Blogfolio Najib</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
			<copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright>
		
		
			<lastBuildDate>Thu, 04 Jun 2026 13:12:35 +0700</lastBuildDate>
		
			<atom:link href="https://najib.id/en/tags/api/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Best Practices for Building APIs in Laravel and Go: Notes from a Real Project</title>
				<link>https://najib.id/en/writing/2026/laravel-go-api-best-practice/</link>
				<pubDate>Thu, 07 May 2026 10:28:00 +0700</pubDate>
				<guid>https://najib.id/en/writing/2026/laravel-go-api-best-practice/</guid>
				<description>&lt;p&gt;In the PHP-to-Go migration project I worked on, there was a phase where I had to audit every existing route and controller. The goal was simple: before migrating, understand which patterns are solid and which need to go. The result? Well, it was&amp;hellip; &lt;em&gt;enlightening&lt;/em&gt; hahaha.&lt;/p&gt;&#xA;&lt;p&gt;The project profile looked like this:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;460+ routes&lt;/strong&gt; in &lt;code&gt;api.php&lt;/code&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;58 controllers&lt;/strong&gt; of various sizes and patterns&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;5 auth guards&lt;/strong&gt;: &lt;code&gt;user-api&lt;/code&gt;, &lt;code&gt;partner-api&lt;/code&gt;, &lt;code&gt;open-api&lt;/code&gt;, &lt;code&gt;open-api-limited&lt;/code&gt;, &lt;code&gt;tms-api&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Varied rate limiting&lt;/strong&gt;: from 3/minute up to 100/minute&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This article isn&amp;rsquo;t a &lt;em&gt;&amp;ldquo;how to build an API&amp;rdquo;&lt;/em&gt; tutorial. These are notes on patterns and anti-patterns I found, plus how the same patterns map to Go. So if you&amp;rsquo;re migrating or starting a new project, &lt;em&gt;hopefully&lt;/em&gt; you can skip some of the mistakes I already discovered hehe~&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
