Вы можете использовать конверты для каждого подресурса и добавлять статус к каждому подресурсу.
Предполагая, что ваш API возвращает основной ресурс A, который, в свою очередь, содержит два вложенных ресурса. ресурсы B и X. Если вызывающий не имеет разрешения на доступ к A, то API должен четко ответить HTTP / 403, как правильно указал cassiomolin.
Если вызывающий имеет полные разрешения для всех ресурсов, пример ответа будет (при условии JSON полезной нагрузки):
{
"entityEnvelopeA": {
"status": "OK",
"data": {
"propertyΑ1": "value1",
"propertyΑ2": "value2"
}
},
"entityEnvelopeΒ": {
"status": "OK",
"data": {
"propertyΒ1": "value1",
"propertyΒ2": "value2"
}
},
"entityEnvelopeΧ": {
"status": "OK",
"data": {
"propertyΧ1": "value1",
"propertyΧ2": "value2"
}
}
}
Если вызывающая сторона не имеет доступа к подресурсу X, ответ будет:
{
"entityEnvelopeA": {
"status": "OK",
"data": {
"propertyΑ1": "value1",
"propertyΑ2": "value2"
}
},
"entityEnvelopeΒ": {
"status": "OK",
"data": {
"propertyΒ1": "value1",
"propertyΒ2": "value2"
}
},
"entityEnvelopeΧ": {
"status": "FORBIDDEN",
"data": {}
}
}
Если этот подход задокументировано в ваших документах API, вызывающий может затем проверить поле status
конверта перед анализом поля data
.