Najlepsza praktyka błędów w API RESTful

Jakie są najlepsze wskazówki dotyczące zwracania kodów stanu HTTP w interfejsie API RESTful? Używam Laravel 4 dla mojego środowiska PHP.

W przypadku błędu powinienem użyć

return Response::json('User Exists', 401);

lub

włącz flagę dlasuccess

return Response::json([
    'success' => false,
    'data' => 'User Exists'],
    401
);

lub

użyj 200 zamiast 4xx, polegając nasuccess aby ustalić, czy wystąpił błąd

return Response::json([
    'success' => false,
    'data' => 'User Exists'],
    200
);

A w przypadku sukcesu i nie ma potrzeby zwracania żadnych danych, czy nadal coś zwracasz?

Kod API PHP

public function getCheckUniqueEmail() {
    // Check if Email already exist in table 'users'
    $uniqueEmail = checkIfEmailExists();

    // Return JSON Response
    if($uniqueEmail) {
        // Validation fail (user exists)
        return Response::json('User Exists', 401);
    } else {
        // Validation success
        // - Return anything?
    }
}

questionAnswers(3)

yourAnswerToTheQuestion