Bird
Raised Fist0
Laravelframework~5 mins

API routes in Laravel - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of API routes in Laravel?
API routes in Laravel define endpoints that respond to HTTP requests, allowing clients to interact with the application programmatically, usually returning data in JSON format.
Click to reveal answer
beginner
Where are API routes defined in a Laravel project?
API routes are defined in the routes/api.php file, which is separate from web routes and is intended for stateless API endpoints.
Click to reveal answer
beginner
How do you define a GET API route in Laravel that returns a list of users?
You use Route::get('/users', [UserController::class, 'index']); inside routes/api.php. This sets up a GET endpoint at /api/users that calls the index method of UserController.
Click to reveal answer
intermediate
What middleware is applied by default to API routes in Laravel?
By default, API routes use the api middleware group, which includes middleware like throttle:api to limit request rates and bindings for route model binding.
Click to reveal answer
intermediate
How can you protect API routes in Laravel to require authentication?
You can add the auth:sanctum or auth:api middleware to your API routes to require users to be authenticated before accessing them.
Click to reveal answer
Where should you define API routes in a Laravel project?
Apublic/index.php
Broutes/web.php
Capp/Http/Controllers
Droutes/api.php
Which HTTP method is used to retrieve data from an API route?
AGET
BPUT
CPOST
DDELETE
What middleware group is applied by default to Laravel API routes?
Aweb
Bapi
Cguest
Dauth
How do you protect an API route to require user authentication?
AAdd 'auth:sanctum' middleware
BAdd 'auth' middleware
CAdd 'guest' middleware
DNo middleware needed
What URL prefix do Laravel API routes use by default?
A/app
B/web
C/api
D/public
Explain how to create a simple API route in Laravel that returns a JSON list of products.
Think about the file location, HTTP method, and response format.
You got /4 concepts.
    Describe how middleware helps secure API routes in Laravel.
    Consider what happens before your API code runs.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of defining API routes in Laravel's routes/api.php file?
      easy
      A. To configure middleware for user authentication
      B. To define web page routes that return HTML views
      C. To store database connection settings
      D. To handle requests from other apps or devices and return JSON responses

      Solution

      1. Step 1: Understand the role of API routes

        API routes are designed to handle requests from external apps or devices, not for web pages.
      2. Step 2: Identify the correct file and response type

        In Laravel, API routes are placed in routes/api.php and usually return JSON data.
      3. Final Answer:

        To handle requests from other apps or devices and return JSON responses -> Option D
      4. Quick Check:

        API routes = handle external requests + JSON [OK]
      Hint: API routes handle external requests and return JSON [OK]
      Common Mistakes:
      • Confusing API routes with web routes that return HTML
      • Thinking API routes are for database settings
      • Assuming API routes are only for middleware
      2. Which of the following is the correct syntax to define a GET API route in Laravel that returns a JSON message "Hello World"?
      easy
      A. Route::get('/hello', function () { return response()->json(['message' => 'Hello World']); });
      B. Route::post('/hello', function () { return 'Hello World'; });
      C. Route::get('/hello', function () { return view('hello'); });
      D. Route::put('/hello', function () { return response('Hello World'); });

      Solution

      1. Step 1: Identify the HTTP verb and response type

        The question asks for a GET route that returns JSON data.
      2. Step 2: Check each option's method and return

        Route::get('/hello', function () { return response()->json(['message' => 'Hello World']); }); uses GET and returns JSON with response()->json(), which is correct. Others use wrong verbs or return types.
      3. Final Answer:

        Route::get('/hello', function () { return response()->json(['message' => 'Hello World']); }); -> Option A
      4. Quick Check:

        GET + JSON response = Route::get('/hello', function () { return response()->json(['message' => 'Hello World']); }); [OK]
      Hint: GET routes return JSON with response()->json() [OK]
      Common Mistakes:
      • Using POST or PUT instead of GET
      • Returning plain strings instead of JSON
      • Returning views in API routes
      3. Given this API route in routes/api.php:
      Route::post('/user', function (Illuminate\Http\Request $request) {
          return ['name' => $request->input('name'), 'age' => $request->input('age')];
      });
      What will be the JSON response if a POST request sends {"name": "Alice", "age": 30}?
      medium
      A. An error because input() is not valid
      B. {"name": null, "age": null}
      C. {"name": "Alice", "age": 30}
      D. Empty response

      Solution

      1. Step 1: Understand the route and request handling

        The route accepts a POST request and reads 'name' and 'age' from the request input.
      2. Step 2: Analyze the input data and response

        The POST request sends JSON with 'name' as "Alice" and 'age' as 30, so the route returns these values as JSON.
      3. Final Answer:

        {"name": "Alice", "age": 30} -> Option C
      4. Quick Check:

        POST input data returned as JSON = {"name": "Alice", "age": 30} [OK]
      Hint: POST data accessed by input() returns JSON response [OK]
      Common Mistakes:
      • Assuming input() won't read JSON body
      • Expecting null values if input keys missing
      • Confusing GET and POST request handling
      4. What is wrong with this API route definition?
      Route::get('/data', function () {
          return response('Data');
      });
      medium
      A. It should return JSON, not plain text, for API routes
      B. The HTTP verb GET is not allowed in API routes
      C. The route path must start with /api/
      D. The closure must accept a Request parameter

      Solution

      1. Step 1: Check the response type for API routes

        API routes should return JSON data, but this returns plain text with response('Data').
      2. Step 2: Verify HTTP verb and route path

        GET is allowed, and route paths don't need to start with /api/ because the file already scopes them.
      3. Final Answer:

        It should return JSON, not plain text, for API routes -> Option A
      4. Quick Check:

        API routes expect JSON responses [OK]
      Hint: API routes should return JSON, not plain text [OK]
      Common Mistakes:
      • Thinking GET is disallowed in API routes
      • Believing route paths must start with /api/
      • Assuming Request parameter is mandatory
      5. You want to create an API route that accepts a user ID in the URL and returns JSON with the user's name. Which of these route definitions correctly achieves this?
      hard
      A. Route::post('/user', function ($id) { return ['name' => 'User ' . $id]; });
      B. Route::get('/user/{id}', function ($id) { return ['name' => 'User ' . $id]; });
      C. Route::get('/user', function (Request $request) { return ['name' => 'User ' . $request->id]; });
      D. Route::get('/user/{id}', function () { return ['name' => 'User']; });

      Solution

      1. Step 1: Identify route with URL parameter

        The route must accept a user ID in the URL, so it needs a parameter like {id} in the path.
      2. Step 2: Check function parameters and response

        Route::get('/user/{id}', function ($id) { return ['name' => 'User ' . $id]; }); correctly uses $id parameter and returns JSON with the user's name including the ID.
      3. Final Answer:

        Route::get('/user/{id}', function ($id) { return ['name' => 'User ' . $id]; }); -> Option B
      4. Quick Check:

        URL param {id} passed as $id = Route::get('/user/{id}', function ($id) { return ['name' => 'User ' . $id]; }); [OK]
      Hint: Use {id} in route and accept $id in closure [OK]
      Common Mistakes:
      • Using POST instead of GET for URL params
      • Not including {id} in route path
      • Not accepting $id parameter in closure