2017-09-12 12 views
0

要求に名前を付けてファイルに書き込むと、GETはすべての名前を返し、DELETEは名前ファイルを削除します。私の問題はDELETEメソッドにあります。名前ファイルが削除されたことを示すために205を送信すると、JSONが応答に含まれていますが、削除するファイルが存在しないことを示す204を送信すると、応答は空に戻ります。NodeJS Express:応答にjsonが含まれていません

はここで動作を定義する方法です。

function clearNames(req, res) { 
    fs.unlink('names.txt', function(err){ 
     if (err) { 
      res.status(204).json({'success': true}); 
     } else { 
      res.status(205).json({'success': true}); 
     } 
    }); 
} 

、ここでの結果です。最初の要求は、名前ファイルが存在するときに送信され、ファイルを削除します。ファイルが削除された後に、第2が送信されますので、何のファイルが削除するように存在しません:エラーの場合には

$ curl -X DELETE -w ' %{http_code}' http://localhost:18080/api/names 
{"success":true} 205 
$ curl -X DELETE -w ' %{http_code}' http://localhost:18080/api/names 
204 
$ 
+0

あなたは '204 No content'の代わりに' 404 Not found'レスポンスステータスコードを使うべきです。これに加えて、なぜあなたは両方のケースで同じであるjsonが必要ですか?応答ステータスコードは、要求の結果を決定するのに十分です。 – alexmac

答えて

1

あなたが「いいえコンテンツ」を意味していない状態204を、送っているので、クライアントは」doesnのそれ以降のコンテンツは期待しないでください。レスポンス本文を含むものにステータスを変更してください。動作するはずです。 specsから

引用:

204応答は、メッセージ本体を含み、従って常にヘッダフィールドの後の最初の空行で終了 ではいけません。

205ステータスには本文も含まれないようにしてください。変更することもお勧めします。

関連する問題