Imagem de fundo

Em um controlador ASP.NET Core anotado com [ApiController], o endpoint POST /servidores...

Em um controlador ASP.NET Core anotado com [ApiController], o endpoint POST /servidores recebe um JSON no corpo com um tipo complexo (ServidorDto) e parâmetros simples como unidadeId (na rota) e ativo (na query string). Qual é o padrão de origem de dados nessa configuração?


A

Em ações POST, o vinculador prioriza a query string; o corpo fica reservado a upload de arquivos. Para ler JSON, é preciso anotar tudo.


B

Com [ApiController], todo parâmetro sem atributo (inclusive os simples) é lido do corpo; valores de rota e query só funcionam quando duplicados com [FromRoute] e [FromQuery].


C

O atributo [FromBody] é obrigatório sempre que houver JSON; sem ele, tipos complexos e simples vêm como default, a menos que estejam em minimal APIs.


D

Em [ApiController], por padrão tipos complexos que não são resolvidos via injeção de dependência vêm do corpo (JSON), enquanto tipos simples são inferidos da rota e/ou da query string.


E

Métodos GET aceitam corpo por padrão; portanto, mesmo sem atributos, a inferência também será do corpo nesses casos.