REST 엔드포인트의 경우 응답 헤더는 Location 클라이언트에게 새로 만든 리소스를 검색할 위치를 알려줍니다. DAB(데이터 API 작성기)는 삽입에 대해 Location 반환 POST 합니다.
PUT 새 행을 만드는 upsert의 경우 PATCH 헤더를 생략할 수 있습니다.
DAB에서 위치 헤더를 설정하는 경우
| Scenario | 상태 코드 | 위치 헤더(현재 동작) |
|---|---|---|
POST 새 행(테이블)을 만듭니다. |
201 생성됨 | 현재: 기본 키 경로 세그먼트(예 id/123 : 또는 categoryid/3/pieceid/1. |
POST 새 행을 반환하는 저장 프로시저를 실행합니다. |
201 생성됨 | PK를 파생할 수 있는 경우 표시합니다. 은 비워 둘 수 없는 경우 비어 있을 수 있습니다. |
PUT upsert가 기존 행을 업데이트합니다. |
200 확인 | 없음 |
PUT upsert가 새 행을 삽입합니다(If-Match없음). |
201 생성됨 | 생략할 수 있습니다. 의존하지 않음 Location |
PATCH upsert가 기존 행을 업데이트합니다. |
200 확인 | 없음 |
PATCH upsert가 새 행을 삽입합니다(If-Match없음). |
201 생성됨 | 생략할 수 있습니다. 의존하지 않음 Location |
PUT
/
PATCH with If-Match: * 및 row missing |
404 찾을 수 없음 | 없음 |
| 모든 업데이트(행이 있음) | 200 확인 | 없음 |
행동
- 복합 기본 키는 순서가 지정된 세그먼트로 표시됩니다(예
book_id/1/id/5001: 또는categoryid/3/pieceid/1.). - 열 이름 매핑(별칭)은 경로에서 REST 노출 필드 이름을 사용합니다.
예: POST 새 항목 만들기
요청
POST /api/Books
Content-Type: application/json
{
"title": "New Book",
"publisher_id": 42
}
응답
HTTP/1.1 201 Created
Location: http://localhost:50246/api/Books/id/123
Content-Type: application/json
{
"id": 123,
"title": "New Book",
"publisher_id": 42
}
이제 GET http://localhost:50246/api/Books/id/123클라이언트에서 .
예: 복합 키 테이블에 POST 삽입
요청
POST /api/Inventory
Content-Type: application/json
{
"categoryid": 3,
"pieceid": 1,
"categoryName": "SciFi"
}
응답
HTTP/1.1 201 Created
Location: http://localhost:50246/api/Inventory/categoryid/3/pieceid/1
Content-Type: application/json
{
"categoryid": 3,
"pieceid": 1,
"categoryName": "SciFi"
}
예: 기존 행 업데이트(위치 없음)
요청
PUT http://localhost:50246/api/Books/id/1
Content-Type: application/json
{
"title": "Updated Title"
}
응답
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"title": "Updated Title"
}
(헤더 없음 Location )
예: 새 행 삽입 PUT
요청
PUT http://localhost:50246/api/Books/id/500
Content-Type: application/json
{
"title": "Inserted via PUT",
"publisher_id": 7
}
응답
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 500,
"title": "Inserted via PUT",
"publisher_id": 7
}
(Location 여기서 헤더를 생략할 수 있습니다.)
예: If-Match 및 행이 누락된 PUT
요청
PUT http://localhost:50246/api/Books/id/500
If-Match: *
Content-Type: application/json
{
"title": "Attempted Update"
}
응답
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": "No Update could be performed, record not found"
}
(헤더 없음 Location )
검토
-
생성이 있는 POST:
Location기본 키 경로와 함께 있습니다. -
업데이트가 있는 PUT 또는 PATCH: 아니요
Location. -
INSERT가 있는 PUT 또는 PATCH: 반환
201 Created;Location을 생략할 수 있습니다(해당 항목에 의존하지 않음). - 포함하는
If-Match: *경우 행이 이미 있는 경우에만 DAB가 업데이트를 수행합니다. 행이 없으면 요청이 실패404 Not Found하고 삽입이 수행되지 않으므로 헤더가 반환되지 않습니다Location.