Wenn Ihr Server die Anfrage versteht und den angeforderten Datenclient zurücksenden möchte, senden Sie eine 200. Wenn Ihr Server die Anfrage versteht, senden Sie die vom Client angeforderten Daten jedoch nicht zurück Senden Sie eine 422. Und genau so funktioniert meine JSON API. Wenn ein Modell gespeichert wird, senden I 200. Wenn die Modellvalidierung Fehler enthält, sende ich 422:Mit Statuscodes für JSON-APIs arbeiten
respond_to do |format|
if @user.persisted?
format.json do
render json: { id: @user.id }, status: 200
end
else
format.json do
render json: { error: @user.errors.full_messages }, status: 422
end
end
end
Leider, wenn ich eine 422 bis Android senden, HttpURLConnection eine Ausnahme auslöst, wenn man versucht den Eingangsstrom zuzugreifen:
W/System.err: java.io.FileNotFoundException: http://10.0.2.2:3001/users/auth/facebook/callback.json
Jetzt, wenn ich 422 zu 200 in meiner JSON API ändern, dann wird keine Ausnahme ausgelöst und ich kann die Daten analysieren.
Aber die Antwort sollte nicht 200 sein, weil es ein Problem beim Speichern der Daten gab. Was muss ein Android-Entwickler tun?
??? Also 422 bekommst du einen Fehler und 200 bekommst du keinen Fehler und du sagst die Antwort SOLLTE nicht 200 sein, oder? Also was brauchst du, 422 oder 200 und Fehler oder kein Fehler? – user7568042
@ user7568042 Ich habe es bereits in meiner Frage erklärt: Wenn das Modell nicht gespeichert wird, möchte ich 422 zurücksenden. Wenn ich jedoch 422 an Android sende, löst es eine Ausnahme aus und erlaubt mir nicht, die Fehlermeldung JSON zu verarbeiten Antwort mit dem 422 Statuscode. – Donato