I am having a problem with my API routes that I cannot figure out what is wrong.
The following is my very brief route file for my API:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\CadIncidentController;
use App\Models\CadIncident;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::post('/cad_incidents', [CadIncidentController::class, 'storeOrUpdate']);
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
When I use Postman to test the API using “ https://mysite/api/cad_incidents” as my endpoint, I am getting a 404 error. When I browse to “https://mysite/api/cad_incidents”, it also returns a 404.
This is what the controller looks like that should be handling the endpoint.
<?php
namespace App\Http\Controllers;
use App\Models\CadComment;
use App\Models\CadIncident;
use App\Models\Hydrant;
use App\Models\Lookup;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CadIncidentController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
*/
public function storeOrUpdate(Request $request)
{
$requestData = $request->validate([
// Define validation rules for each field (e.g., required, date, etc.)
// Example:
'incidentid' => 'required|unique:cad_incidents',
'incident_date' => 'required|date',
'incident_type' => 'required',
'cad_incident_number' => 'required',
// Add validation rules for other fields accordingly.
]);
// Parse JSON data from the request (assuming JSON data is in the request body)
$jsonData = $request->json()->all();
// Merge the parsed JSON data with the validated request data
$requestData = array_merge($requestData, $jsonData);
// Find or create the incident based on the 'incidentid'
$incident = CadIncident::updateOrCreate(['incidentid' => $requestData['incidentid']], $requestData);
return response()->json(['message' => 'Incident saved successfully', 'data' => $incident], 201);
}
}
What am I doing wrong?