PUT(/serviceconfigs/{scid}/sessiontemplates/{sessionTemplateName}/sessions/{sessionName})
세션을 만들거나, 업데이트하거나, 세션에 참가합니다.
중요:
이 URI 메서드에는 모든 요청에 대해 X-Xbl-Contract-Version: 104/105 이상의 헤더 요소가 필요합니다.
설명
이 HTTP/REST 메서드는 동일한 JSON 요청 본문 템플릿의 하위 집합에 따라 세션을 만들거나, 세션에 참여하거나, 업데이트합니다. 성공하면 서버에서 반환된 응답을 포함하는 MultiplayerSession 개체를 반환합니다. 이 속성은 전달된 MultiplayerSession 개체의 속성과 다를 수 있습니다. 이 메서드는 Microsoft.Xbox.Services.Multiplayer.MultiplayerService.WriteSessionAsync로 래핑될 수 있습니다.
세션 생성 및 업데이트 작업은 적용할 변경 사항을 나타내는 application/json 본문과 함께 PUT를 사용합니다. 작업은 idempotent이며, 동일한 변경 사항을 여러 번 적용해도 추가적인 영향이 없습니다.
JSON 요청 본문은 세션 데이터 구조를 반영합니다. 모든 필드와 하위 필드는 선택 사항입니다.
PUT 메서드의 세션 생성 또는 참가 모드에 대한 통신 형식은 다음과 같습니다.
참고:
이러한 패턴을 사용하여 처리합니다. 업데이트는 세션의 현재 상태와 상관없이 무조건적으로 적용됩니다.
PUT /serviceconfigs/00000000-0000-0000-0000-000000000000/sessiontemplates/quick/sessions/00000000-0000-0000-0000-000000000001 HTTP/1.1
Content-Type: application/json
PUT 메서드의 세션 업데이트 모드에 대한 통신 형식은 다음과 같습니다.
PUT /serviceconfigs/00000000-0000-0000-0000-000000000000/sessiontemplates/quick/sessions/00000000-0000-0000-0000-000000000001 HTTP/1.1
Content-Type: application/json
세션 속성을 업데이트하기 위한 PUT 메서드의 통신 형식은 다음과 같습니다. 아래의 개체만 속성으로 갖는 본문이 포함된 세션 URI에 대한 PUT 작업과 동일합니다. 차이점은 세션이 존재하지 않는 경우 오류 코드 404 Not Found가 반환된다는 것입니다. 이 작업은 If-Match 헤더를 지원합니다.
PUT /serviceconfigs/00000000-0000-0000-0000-000000000000/sessiontemplates/quick/sessions/00000000-0000-0000-0000-000000000001/properties HTTP/1.1
Content-Type: application/json
{ "system": { }, "custom": { } }
URI 매개 변수
매개 변수 | 형식 | 설명 |
---|---|---|
scid | GUID | 서비스 구성 식별자(SCID). 세션 식별자의 파트 1. |
sessionTemplateName | 문자열 | 세션 템플릿의 현재 인스턴스 이름. 세션 식별자의 파트 2. |
sessionName | GUID | 세션의 고유한 ID. 세션 식별자의 파트 3. |
HTTP 상태 코드
이 서비스는 MPSD에 적용할 때 HTTP 상태 코드를 반환합니다.
요청 본문
아래는 세션 생성 또는 참가에 대한 샘플 요청 본문입니다. 요청 본문의 다음 멤버는 선택 사항입니다. 요청에서 다른 모든 잠재적인 멤버는 금지됩니다.
멤버 | 유형 | 설명 |
---|---|---|
constants | 개체 | 세션 템플릿에 병합되어 세션에 대한 상수를 만드는 읽기 전용 설정. |
properties | 개체 | 세션 속성에 병합되는 변경 사항. |
members.me | 개체 | 해당되는 상위 항목과 같이 작용하는 상수 및 속성. PUT 메서드에서 사용자는 세션의 멤버여야 하고, 필요한 경우 사용자를 추가합니다. "me"가 null로 지정된 경우 요청을 한 멤버는 세션에서 제거됩니다. |
members | 개체 | 세션에 추가할 사용자를 나타내는 다른 개체로, 0부터 시작하는 인덱스로 키 지정됩니다. 세션에 이미 멤버가 포함된 경우에도 요청 내 멤버의 수는 항상 0부터 시작합니다. 멤버는 요청에 표시된 순서대로 세션에 추가됩니다. 멤버 속성은 멤버가 속한 사용자만 설정할 수 있습니다. |
servers | 개체 | 세션의 연결된 서버 참가자 집합에 대한 업데이트 및 추가 사항을 나타내는 값. 서버가 null로 지정된 경우 해당 서버 항목은 세션에서 제거됩니다. |
{
"properties": {
"custom": {"KANWE": "MGMSY"},
"system": {}
},
"constants": {
"custom": {},
"system": {"visibility": "open"}
},
"members": {
"reserve_0": {
"constants": {
"custom": {"type": "leader"},
"system": {"xuid": "5500461"} }}
}
}
응답 본문
세션 생성 또는 참가에 대한 샘플 요청 본문:
{
"contractVersion": 104,
"correlationId": "0FE81338-EE96-46E3-A3B5-2DBBD6C41C3B",
"nextTimer": "2009-06-15T13:45:30.0900000Z",
"initializing": {
"stage": "measuring",
"stageStartTime": "2009-06-15T13:45:30.0900000Z",
"episode": 1
},
"hostCandidates": [ "ab90a362", "99582e67" ],
"constants": {
"system": {"visibility": "open"},
"custom": {}
},
"properties": {
"system": { "turn": [] },
"custom": { "myProperty": "myValue" }
},
"members": {
"1": {
"properties": {
"system": { },
"custom": { }
},
"constants": {
"system": { "xuid": "5500461" },
"custom": { }
}
"gamertag": "stacy",
"deviceToken": "9f4032ba7",
"reserved": true,
"activeTitleId": "8397267",
"joinTime": "2009-06-15T13:45:30.0900000Z",
"turn": true,
"initializationFailure": "latency",
"initializationEpisode": 1,
"next": 4
},
},
"membersInfo": {
"first": 1,
"next": 4,
"count": 1,
"accepted": 0
},
"servers": {
"name": {
"constants": { },
"properties": { }
}
}
}
참고 항목
부모
/serviceconfigs/{scid}/sessiontemplates/{sessionTemplateName}/sessions/{sessionName}