Heim > Artikel > Backend-Entwicklung > Problem beim Schreiben der Schnittstelle
Meine Schnittstelle sieht so aus. Nur wenn eine Rückgabe erfolgt, haben die Daten in JSON einen Wert, andernfalls handelt es sich um eine leere Zeichenfolge
Ein Kollege erzählte mir, dass die Daten bei Erhalt mithilfe von JSON in ein Objekt konvertiert wurden. Wenn die Daten leer wären, würde sein gesamtes Programm explodieren oder meine Daten würden Null zurückgeben, was nicht zurückgegeben werden kann. Ich verstehe es einfach nicht. Ist das wirklich so?
Meine Schnittstelle sieht so aus. Nur wenn eine Rückgabe erfolgt, haben die Daten in JSON einen Wert, andernfalls handelt es sich um eine leere Zeichenfolge
Ein Kollege erzählte mir, dass die Daten bei Erhalt mithilfe von JSON in ein Objekt konvertiert wurden. Wenn die Daten leer wären, würde sein gesamtes Programm explodieren oder meine Daten würden Null zurückgeben, was nicht zurückgegeben werden kann. Ich verstehe es einfach nicht. Ist das wirklich so?
Das stimmt. Wenn sie zu einem Array werden, bleiben sie hängen, ohne dass sie verarbeitet werden. $info['data'] = new stdClass();//返回空对象
Als Server sollte man meiner Meinung nach sensibel mit Feldtypen umgehen.
Müssen Sie den Codewert nicht beurteilen?
Hat Ihr Kollege ein Framework verwendet, um den JSON zu analysieren? Bitten Sie ihn einfach, ihn manuell zu analysieren. Verwenden Sie keine Frames.
Andernfalls kann das Framework nicht feststellen, dass [] in Daten ein leeres Objekt ist.
Natürlich können Sie den Wert des Codes auch vor dem Parsen ermitteln.
Dies wird tatsächlich passieren, wenn der Client-Code nicht gut geschrieben ist. Der Topf wurde dir zugeworfen, wenn du besser bist als er, andernfalls nimm den Topf. . .
Im Allgemeinen verwendet der Client ein GSON-ähnliches Framework, um die vom Server zurückgegebenen JSON-Daten zu analysieren, und das Datenformat muss im Voraus definiert werden. Da es sich bei Daten um ein Objekt handelt, können Sie den Standardwert des Objekts verwenden, der meiner Meinung nach ganz normal ist.
Ich denke, es kommt darauf an, wer sich leicht ändern kann~~
Ich denke, dass das, was Sie gesagt haben, Sinn macht. Im Allgemeinen werde ich jede Bequemlichkeit in Anspruch nehmen, die mir meine Kollegen bieten. Dann führen Sie die Bearbeitung selbst durch.
Lassen Sie uns natürlich die spezifischen Probleme im Detail analysieren~~
Ich denke, es ist besser, den Wert von Code zu beurteilen
Als API sollte dasselbe Feld denselben Datentyp zurückgeben.
Aber wenn es das Problem löst, können Sie auch Code verwenden.
Wenn Sie sich also in der Entwicklung befinden, ändern Sie die Schnittstelle. Wenn es bereits online ist, ändern Sie die Schnittstelle.
Daher ist ein gemeinsames Debuggen der Schnittstelle erforderlich
Was Ihr Kollege gesagt hat, ist kein Problem. Stellen Sie sicher, dass der Datentyp jedes Felds immer konsistent ist. Sind sie schließlich stark typisiert?
Das Schreiben auf der App-Seite ist nicht streng genug. Wenn es erfolgreich ist, wird die Analyse der Daten fortgesetzt. Wenn es nicht erfolgreich ist, wird der Fehlercodecode zurückgegeben Analysieren Sie es. Aufgrund des schwachen PHP-Typs auf der Serverseite analysiert die App alle Datentypen, dh starke Typen. Versuchen Sie, die Konsistenz der zurückgegebenen Datentypen sicherzustellen ist nicht leer, die zurückgegebene JSON-Zeichenfolge wird von der App als Objekt analysiert. Wenn die Daten leer sind, bestimmt der Server, ob sie leer sind. Wenn sie leer sind, weist er ein leeres Objekt zu
<code>$obj = new stdClass();</code>
Warum nicht zuerst Variablen auf der PHP-Seite definieren? ? $data=array()
Darüber hinaus muss der Client sicherstellen, dass er auf keinen Fall abstürzt. Ich schlage vor, dass Sie während des Entwicklungsprozesses einige Fehlerrückgabewerte an den Client simulieren, um zu sehen, ob der Client dies tut Absturz. Dann lass ihn die Schuld auf sich nehmen, haha, nur ein Scherz
<code class="php">$result = array( "code" => "2", "msg" => "", "data" => (Object)array() );</code>
Schreiben Sie nicht direkt
<code class="php">$result = array( "code" => "2", "msg" => "", "data" => array() );</code>