Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para pontos de extremidade REST, o cabeçalho de resposta informa aos Location clientes onde recuperar um recurso recém-criado. O construtor de API de dados (DAB) retorna Location para POST inserções. Para PUT ou PATCH upserts que criam novas linhas, o cabeçalho pode ser omitido.
Quando o DAB define o cabeçalho Location
| Scenario | Código de estado | Cabeçalho de localização (comportamento atual) |
|---|---|---|
POST cria uma nova linha (tabela) |
201 Criado | Presente: segmentos de caminho de chave primária, por exemplo id/123 ou categoryid/3/pieceid/1. |
POST executa o procedimento armazenado retornando novas linhas |
201 Criado | Presente se a farmacocinética puder ser derivada; pode estar vazio quando não pode. |
PUT upsert atualiza linha existente |
200 OK | Não presente |
PUT upsert insere nova linha (sem If-Match) |
201 Criado | Pode ser omitido; não confie em Location |
PATCH upsert atualiza linha existente |
200 OK | Não presente |
PATCH upsert insere nova linha (sem If-Match) |
201 Criado | Pode ser omitido; não confie em Location |
PUT
/
PATCH com If-Match: * e linha em falta |
404 Não encontrado | Não presente |
| Qualquer atualização (linha existente) | 200 OK | Não presente |
Comportamento
- As chaves primárias compostas aparecem como segmentos ordenados, por exemplo
book_id/1/id/5001oucategoryid/3/pieceid/1. - Os mapeamentos de nome de coluna (aliases) usam os nomes de campo expostos por REST no caminho.
Exemplo: POST criando um novo item
Solicitação
POST /api/Books
Content-Type: application/json
{
"title": "New Book",
"publisher_id": 42
}
Resposta
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
}
O cliente pode agora GET http://localhost:50246/api/Books/id/123.
Exemplo: inserção de POST na tabela de chaves composta
Solicitação
POST /api/Inventory
Content-Type: application/json
{
"categoryid": 3,
"pieceid": 1,
"categoryName": "SciFi"
}
Resposta
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"
}
Exemplo: PUT atualizando linha existente (sem local)
Solicitação
PUT http://localhost:50246/api/Books/id/1
Content-Type: application/json
{
"title": "Updated Title"
}
Resposta
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"title": "Updated Title"
}
(Sem Location cabeçalho.)
Exemplo: PUT inserindo nova linha
Solicitação
PUT http://localhost:50246/api/Books/id/500
Content-Type: application/json
{
"title": "Inserted via PUT",
"publisher_id": 7
}
Resposta
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 500,
"title": "Inserted via PUT",
"publisher_id": 7
}
Location( cabeçalho pode ser omitido aqui.)
Exemplo: PUT com If-Match e linha ausentes
Solicitação
PUT http://localhost:50246/api/Books/id/500
If-Match: *
Content-Type: application/json
{
"title": "Attempted Update"
}
Resposta
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": "No Update could be performed, record not found"
}
(Sem Location cabeçalho.)
Revisão
-
POST com criação:
Locationestá presente com o caminho da chave primária. -
PUT ou PATCH com atualização: Não
Location. -
PUT ou PATCH com inserção: Devoluções
201 Created;Locationpode ser omitida (não dependa dela). - Quando você inclui
If-Match: *o , o DAB só executa uma atualização se a linha já existir. Se a linha estiver faltando, a solicitação falhará com404 Not Founde nenhuma inserção será executada, portanto, nenhumLocationcabeçalho será retornado.