JSON is the de-factor choice of transmitting data across the internet in the modern day. Its easy-to-read nature is pleasing for both human and computer.
When we are sending API requests we usually use JSON formatted string as our request payload. However, it has its flaws when it comes to sending data, i.e. it can only send data that can be converted into string. Binary data like images, PDF files can’t be sent with JSON.
So how do we resolve this?
The answer is: use
Getting authentication right is not a straightforward task. Thankfully, Laravel has released an official authentication package called Laravel Fortify that took care of everything about authentication for us.
In summary, Fortify mainly consisted of 7 components:
Laravel Fortify has preloaded a lot of API endpoints for us. Below is a brief overview on the endpoints that are available to us.
Non XHR API:
On success, redirect to
home route defined in fortify…
There are quite a few casing systems out there. Camel case, snake case pascal case, kebab case and etc. Let’s explore their use case scenarios!
Developers love to use conventions! They help us to organise our code and improve maintainability.
When it comes to naming variables and data structure in our code we use casing conventions to differentiate variable types and symbols.
The followings are the common usage for each casing convention.
camelCase is for variables, function names, arguments and other generic uses.
snake_case is similar to
camelCase but we usually choose either one and stick to it for the…
Setting request query parameter can be very useful, especially in testing. We can set the request query parameter on runtime using the
$request->merge() function. Here’s how:
/** @var $request \Illuminate\Http\Request */
$request = app()['request'];
'page' => '3'
]);dump($request->page); // expect: '3'
In Testing Classes, we should access the app instance via
// TestClass extending TestCase/** @var $request \Illuminate\Http\Request */
$request = $this->app['request'];
'page' => '3'
merge function will modify the current request in-place. If you want to clone the request, you can use the
$request = app()['request'];// cloning the request so we don't modify the source
$newRequest = \Illuminate\Support\Facades\Request::createFrom($request);$nreRequest->merge([
'body' => 'heyy']);dump($request->body); // expect null
That’s it! Happy coding.
API (Application Programming Interface) sounds complicated, but it just means “function”!
When we are interacting with a computer, we don’t need to care about the inner working of a computer, i.e.
All we care about is how to use a keyboard and a mouse. In other words, keyboard and mouse are the interfaces for us human to use the computer. This applies to other objects as well. …
Sometimes we just want to run composer command directly in our PHP code. But there seems to be no other easy solution other than
shell_exec() … or is there?
It turns out there is a built-in
Composer helper class in Laravel’s ecosystem! Yes, that’s right, it lives under the
Illuminate\Support namespace. However, it doesn’t have a method to run arbitrary composer commands out of the box.
Let’s tweak it and add some new flavour! 😎
We will create a new Composer class that inherits
Programatically install a package:
If you see…
In general, it is a good idea to use HTTPS at all times. Why? It increases your visitors’ confidence on your brand, improves security / privacy and makes the internet a better place. You wouldn’t want your customer to see the “This site is not secure” warning right? That would scare your users away! 😱
Certificate Authority (CA) — An organisation that issue SSL certificates.
Domain — This is the address to your website. Eg. medium.com
Secure Socket Layer (SSL) — A way to transfer data securely to another machine. Imagine SSL as a secure tunnel. The data is encrypted…
Watch this tutorial on Youtube:
The “Search everything” box in the navigation bar is a very common feature in modern web app. I like it a lot, but implementing it in our own web app could be challenge. Here’s my solution to tackle this problem.
Note: I’m using Laravel 8 at the time of writing this article.
Full source code for this tutorial is available here. I will only cover the core implementation in this article. …
Please refer to my previous Docker tutorial if you have no idea what Docker is.
In the previous tutorial we explored the basics of Docker by running a simple PHP website in a container that has a built-in web server. But what if we want to set up a database?
Well we can simply install a database engine (eg MySQL) to our image and recreate the container, right?
Technically, you can do that, but it defeats the purpose of Docker. Docker is different to virtual machines and it is designed to be highly scalable and isolable.
The Docker way to…
But we see our good old friend CORS error :)
Resource from origin 'https://mysite.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No Access-Control-Allow-Origin header is present on the requested resource.
But you’ve already added Laravel CORS config? All the other API routes work perfectly fine except for static resources?
Well it turns out when we request static resources, the web server will serve them…