Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para pontos de extremidade REST, o cabeçalho de Location resposta informa aos clientes onde recuperar um recurso recém-criado. O DAB (Construtor de API de Dados) 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 Local
| Scenario | Código de status | 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 | Apresentar se o PK pode ser derivado; pode estar vazio quando não puder. |
PUT upsert atualiza linha existente |
200 OK | Não está 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 está 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 ausente |
404 Não Encontrado | Não está presente |
| Qualquer atualização (a linha existia) | 200 OK | Não está presente |
Comportamento
- As chaves primárias compostas aparecem como segmentos ordenados, por exemplo
book_id/1/id/5001oucategoryid/3/pieceid/1. - Os mapeamentos de nomes 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 agora GET http://localhost:50246/api/Books/id/123pode .
Exemplo: POST inserindo na tabela de chaves compostas
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 a 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"
}
(Nenhum 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 o cabeçalho pode ser omitido aqui.)
Exemplo: PUT com If-Match e linha ausente
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"
}
(Nenhum Location cabeçalho.)
Review
-
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: Retorna
201 Created;Locationpode ser omitido (não dependa dele). - Quando você incluir
If-Match: *, o DAB só executará uma atualização se a linha já existir. Se a linha estiver ausente, a solicitação falhará404 Not Founde nenhuma inserção será executada, portanto, nenhumLocationcabeçalho será retornado.