Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для конечных точек REST заголовок ответа сообщает клиентам, Location где получить только что созданный ресурс. Построитель данных (DAB) возвращает значения Location для POST вставок. Для PUT или PATCH upserts, создающих новые строки, заголовок может быть опущен.
Если DAB задает заголовок Location
| Scenario | Код состояния | Заголовок расположения (текущее поведение) |
|---|---|---|
POST создает новую строку (таблицу) |
201 Создано | Присутствует: сегменты первичного ключа, например id/123 или categoryid/3/pieceid/1. |
POST выполняет хранимую процедуру, возвращающую новые строки |
201 Создано | Присутствует, если PK может быть производным; может быть пустым, если он не может. |
PUT upsert обновляет существующую строку |
200 OK (Запрос выполнен успешно) | Нет |
PUT upsert вставляет новую строку (без If-Match) |
201 Создано | Может быть опущен; не полагаться на Location |
PATCH upsert обновляет существующую строку |
200 OK (Запрос выполнен успешно) | Нет |
PATCH upsert вставляет новую строку (без If-Match) |
201 Создано | Может быть опущен; не полагаться на Location |
PUT
/
PATCH с отсутствующими строками If-Match: * и |
404 Не найдено | Нет |
| Любое обновление (существует строка) | 200 OK (Запрос выполнен успешно) | Нет |
Поведение
- Составные первичные ключи отображаются как упорядоченные сегменты, например
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, обновляющая существующую строку (без расположения)
Просьба
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 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 заголовок может быть опущен здесь.)
Пример: PUT с отсутствующими If-Match и строками
Просьба
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. -
PUT или PATCH с вставкой: Возвращается
201 Created;Locationможет быть опущен (не зависит от него). - При включении
If-Match: *DAB выполняет обновление только в том случае, если строка уже существует. Если строка отсутствует, запрос завершается ошибкой404 Not Foundи не выполняется вставка, поэтому заголовок неLocationвозвращается.