2016-05-30 2 views
4

У меня есть приложение Rails, которое также имеет API. Я пытаюсь следовать за http://jsonapi.org для общей структуры, но я не могу найти никаких рекомендаций относительно того, когда дело доходит до результата без каких-либо данных. Я, например, не имеют конечную точку, которая выглядит следующим образом:Дизайн API - наилучшая практика json_api для возврата данных

https://[root]/api/apps/34/localized_strings?from_date=1330776000 

Где from_date отметка времени Unix, если сервер обновил или новые данные, основанные на этой дате значение я вернуть все данные, он там никаких обновлений I хотите вернуть данные. И мне интересно, что лучший способ сделать это. Текущий результат выглядит следующим образом:

{ 
    "data": [] 
} 

было бы лучше или более традиционные на основе http://jsonapi.org вместо этого вернуть статус «статус»: 204 в тех случаях, когда отсутствуют какие-либо изменения или данные?

ответ

0

According to the specification, ответ, представляющий собой пустую коллекцию будет:

HTTP/1.1 200 OK 
Content-Type: application/vnd.api+json 

{ 
    "links": { 
    "self": "http://example.com/articles" 
    }, 
    "data": [] 
} 

Сервер ДОЛЖЕН ответить на успешный запрос fet ch - отдельный ресурс с ресурсным объектом или null, представленный в качестве основных данных документа ответа.

HTTP/1.1 200 OK 
Content-Type: application/vnd.api+json 

{ 
    "links": { 
    "self": "http://example.com/articles/1/author" 
    }, 
    "data": null 
} 
+0

Неправильное использование. Предполагая, что «нет данных» OP означает пустое тело, тогда http://stackoverflow.com/a/37521258/879854 верен: статус 204, ни тело, ни тип содержимого. Если OP означает, что первичные ресурсы не ожидаются, то элемент данных может быть опущен. Документ успеха должен иметь ОДИН OF данные, ошибки или мета. Таким образом, тело ответа может быть просто мета или мета и, возможно, некоторые другие. – BF4

+0

Если это GET ресурсу, то данные: null имеет смысл: «выборка отдельного ресурса с объектом ресурса или null, предоставленным в качестве первичных данных документа ответа» – BF4

+0

Поскольку этот запрос может быть интерпретирован как условный get, тогда ответ будет пустым телом и 304 https://httpstatuses.com/304 – BF4

2

Просто вернуть head :no_content, поэтому рельсы будут возвращать 204 код состояния с пустым содержимым

Вот пример для уничтожения

def destroy 
    # Destroy stuff 

    # Return 204, no content 
    head :no_content 
end