Ich versuche serverseitige Anwendung mit Swift und Vapor Framework zu schreiben. Allerdings kann ich nicht herausfinden, wie statische Dateien mit Vapor geliefert werden. Es reicht nicht aus, sie nur in das Verzeichnis Public
oder Resources
zu verschieben.
Wie kann ich das tun?
UPD. Ich habe Schritte durchgeführt, die Tanner Nelson vorgeschlagen hat, aber es funktioniert immer noch nicht.
Was ich bisher versucht habe:
vapor build
und vapor run
(mit Vapor Toolbox v0.6.1).
./build/debug/App
aus dem Stammverzeichnis (enthält Package.swift
).
Führen Sie nach dem Bearbeitungsschema in Xcode 8 Beta aus, wie Tanner Nelson vorgeschlagen hat.
In all diesen Fällen bekomme ich einen Fehler
{"error":true,"message":"Page not found"}
Ich habe die Datei vapor_logo.png
in einem Public
Ordner und auch die gleiche Datei im Public/images/
Ordner. Ich versuche es anzufordern und es schlägt fehl. Anfragen, die ich gemacht habe: http://localhost:8080/image/vapor_logo.png
und http://localhost:8080/vapor_logo.png
. Andere Routen funktionieren jedoch gut.
UPD 2. Nun, das waren alle meine Fehler. Erstens, Datei, von der ich glaube, dass sie vapor_logo.png
hieß, hieß eigentlich vapor-logo.png
. Zweitens, Fall ist wichtig, wenn Sie eine Anfrage stellen. Ich habe auch versucht, die Datei mit dem Namen IMG_8235.JPG
anzufordern, aber die Dateierweiterung als jpg
zu schreiben, daher wurde ein Fehler gemeldet.
Zur Erinnerung: Wenn Sie das gleiche Problem wie ich haben, folgen Sie der Antwort von Tanner Nelson und stellen Sie sicher, dass der Name der angeforderten Datei genau mit dem Namen der Datei übereinstimmt.
Die Vapor-Ordnerstruktur von Google Docs :
%Vor% Alle Dateien im Ordner Public
werden standardmäßig bereitgestellt, wenn keine Routen registriert wurden, die in Konflikt mit dem Dateinamen stehen.
Wenn Sie beispielsweise eine Datei Public/foo.png
und die folgende main.swift
-Datei haben:
Eine Anfrage an localhost/welcome
würde "Hello, world"
zurückgeben und eine Anfrage an localhost/foo.png
würde foo.png
zurückgeben.
Wenn dies nicht richtig funktioniert, ist Ihr Arbeitsverzeichnis wahrscheinlich nicht richtig konfiguriert. Dies kann passieren, wenn Sie Ihr Projekt von Xcode aus ausführen oder es von der Befehlszeile aus in einem Ordner ausführen, der nicht das Stammverzeichnis des Projekts ist.
Um Xcode zu beheben, gehen Sie zu Schemes > App > Edit Scheme > Run > Options > Working Directory > [x] Use Custom Working Directory
und vergewissern Sie sich, dass das Verzeichnis auf das Stammverzeichnis Ihres Projekts gesetzt ist (in dem sich Package.swift befindet).
Um zu beheben, wenn Sie über die Befehlszeile ausgeführt werden, vergewissern Sie sich, dass Sie die Anwendung über das Stammverzeichnis ausführen. der Befehl run sollte etwa so aussehen wie .build/debug/App
, da sich der Ordner .build
im Stammverzeichnis befindet.