REST 만들기 작업의 위치 응답 헤더

REST 엔드포인트의 경우 응답 헤더는 Location 클라이언트에게 새로 만든 리소스를 검색할 위치를 알려줍니다. DAB(데이터 API 작성기)는 삽입에 대해 Location 반환 POST 합니다. PUT 새 행을 만드는 upsert의 경우 PATCH 헤더를 생략할 수 있습니다.

DAB에서 위치 헤더를 설정하는 경우

시나리오 상태 코드 위치 헤더(현재 동작)
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 .

메모

이 섹션에 설명된 Data API Builder 2.0 기능은 현재 미리 보기 상태이며 일반 공급 전에 변경될 수 있습니다. 자세한 내용은 버전 2.0의 새로운 기능입니다.