Ich bin neu in Lumen. Ich begann Lumen unter Mac OS zu verwenden und es in einem Andock-Container auszuführen.Nur die App-Version mit Lumen POST API Anruf
Die App Service im dockerfile ist wie folgt:
app:
build:
context: ./
dockerfile: app.dockerfile
working_dir: /var/www
volumes:
- ./:/var/www
environment:
- "DB_PORT=3306"
- "DB_HOST=database"
Der MySQL-Dienst ist perfekt und läuft. Beim Öffnen http://localhost:9002 kann ich die normale Lumen App Versionierung sehen:
Lumen (5.4.6) (Laravel Components 5.4.*)
Jetzt habe ich einen API-Endpunkt für einfache SMS gemacht anerkannt werden. Der Benutzer sollte von und zu Telefonnummern senden und ich validiere sie einfach mit den Daten, die in der DB vorhanden sind, und gebe das Ergebnis zurück.
Mein routes.php liest:
$app->post('/outbound/sms', 'App\Http\Controllers\[email protected]');
Mein SmsController unter App vorhanden ist \ Http \ als auch Controller. Es verwendet ein Modell Phone wie folgt:
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\PhoneNumber;
use Illuminate\Support\Facades\App;
public function sendSms(Request $request)
{
try
{
$fromModel = PhoneNumber::findOrFail($request->input('from'));
}
catch(ModelNotFoundException $e)
{
return response()->json(['message'=> '', 'error'=> 'from is not found']);
}
try
{
$toModel = PhoneNumber::findOrFail($request->input('to'));
}
catch(ModelNotFoundException $e)
{
return response()->json(['message'=> '', 'error'=> 'to is not found']);
}
$this->validateSms($_REQUEST);
return response()->json(['message'=> 'inbound sms ok', 'error'=> '']);
}
Meine .htaccess Datei lautet:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
Options +FollowSymLinks
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
auf einem Post-API-Aufruf von Postman machen,
http://localhost:9002/outbound/sms?from=1234567890&to=3456789&text=hi
ich immer bekommen die App-Version als Antwort:
Lumen (5.4.6) (Laravel Components 5.4.*)
Sogar das Anhängen von index.php an die URL funktioniert nicht. Kann nicht erkennen, was los ist?
Update: Endlich habe ich die Routen funktioniert gut. Der Inhalt meiner routes.php sollte in routes/web.php statt in App \ Http sein.
Mutter jetzt bekomme ich NotFoundHttpException. Unten ist der Stack-Trace ::
in RoutesRequests.php (line 594)
at Application->handleDispatcherResponse(array(0))
in RoutesRequests.php (line 532)
at Application->Laravel\Lumen\Concerns\{closure}()
in RoutesRequests.php (line 781)
at Application->sendThroughPipeline(array(), object(Closure))
in RoutesRequests.php (line 534)
at Application->dispatch(object(Request))
in RoutesRequests.php (line 475)
at Application->run(object(Request))
in index.php (line 29)