Springboot、Spring フレームワークが 204 ステータス コードを返すと、戻り値を飲み込みます

背景

興味深い現象を発見しました。つまり、インターフェイスが HTTP ステータス コード 204 を返すと、コード内に戻りがあっても、応答本文が自動的に読み取られます。たとえば
(実際、204 自体は NO_CONTENT を意味しますが、実際にはそれを強制終了して返すとは予想していませんでした)

@PostMapping("/stu")
    public Stu stu(HttpServletResponse resp) {
    
    
        resp.setStatus(204);
        Stu stu = new Stu();
        stu.setName("Stone");
        return stu;
    }

    @Data
    public static class Stu {
    
    
        private String name;
    }

ここに画像の説明を挿入します

: 204 行目を削除すると、200 が返されます。
ここに画像の説明を挿入します

応用

実際、たとえばインターフェイスがある場合、Restful 設計ルールに従って、次のような要件があります。ユーザーが作成された場合は 200 (または作成された 201) を返し、ユーザーが変更された場合は 204 を返します。 (コンテンツなし)

ただし、Java レベルには常に戻り値の型が必要であり、void は使用できません。つまり、204 の場合、return は構文レベルで実行する必要があり、この 204 の動作は期待どおりであると見なされます。

コードが 204 で null を返していることがわかりますが、実際には、null を返したからといって応答本文にコンテンツがないわけではなく、204 である限り、自動的にコンテンツはなくなります。

おすすめ

転載: blog.csdn.net/w8y56f/article/details/134324199