2015-05-25 5 views
0

У меня есть пользователь в магазине пользователя mu со следующими атрибутами.Выход для метода пользователя PIM пользователя при обновлении составного атрибута

{ 
    "id": "bfae138c-9f57-4ff1-ab63-599f2034371f", 
    "schemas":[ 
    "urn:scim:schemas:core:1.0" 
    ], 
    "name":{ 
    "formatted": "Ms. Barbara J Jensen III", 
    "familyName": "Jensen", 
    "givenName": "Barbara" 
    }, 
    "userName": "bjensen123", 
    "externalId": "bjensen", 
    "meta":{ 
    "lastModified": "2015-05-25T08:59:28", 
    "location": "https://localhost:9443/wso2/scim/Users/bfae138c-9f57-4ff1-ab63-599f2034371f", 
    "created": "2015-05-25T08:59:28" 
    } 
} 

Я отправляю запрос на этот ресурс следующим телом метода.

{ 
    "schemas":["urn:scim:schemas:core:1.0"], 
    "userName":"bjensen123", 
    "name":{ 
    "formatted":"Ms. Bb", 
    } 
} 

Каким должен быть атрибут имени моего результирующего ресурса?

"name":{ 
    "formatted":"Ms. Bb", 
} 

или

"name":{ 
    "formatted": "Ms. Bb", 
    "familyName": "Jensen", 
    "givenName": "Barbara" 
    } 

ответ

1

запрос PUT должен быть обработан как полное обновление, в отличие от пластыря, который будет обновлять только указанные атрибуты, и не является обязательным для реализатора (согласно SCIM 1.1 spec). Цель PUT состоит в том, что запрашивающий сначала выполняет чтение (GET) пользователя, изменяет нужные атрибуты и предоставляет полное обновление, чтобы включить те атрибуты, которые фактически не изменяются (пароль является единственным исключением). Любые атрибуты, которые не указаны со значениями в запросе PUT, будут удалены. Таким образом, в вашем примере, ответ PUT вернется как:

"имя": { "форматных": "Ms Bb"}

Если вы не хотите потерять FamilyName и GivenName, вы также должны повторно указать их (наряду с любыми другими атрибутами, которые вы не хотите сдуть). Вот определение спецификации: http://www.simplecloud.info/specs/draft-scim-api-01.html