Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[FromBody]

Não vi mais o uso do [FromBody] dentro dos metodos. não é mais necessário? antes usávamos assim:

[HttpPost]
        public IActionResult AdicionaCinema([FromBody] CreateCinemaDto cinemaDto)
        {
            Cinema cinema = _mapper.Map<Cinema>(cinemaDto);
            _context.Cinemas.Add(cinema);
            _context.SaveChanges();
            return CreatedAtAction(nameof(RecuperaCinemasPorId), new { Id = cinema.Id }, cinema);
        }

e agora nao foi usado para a SessãoController

2 respostas

Olá Rodolfo Silva, basicamente se voce quizer receber esse CreateCinemaDto e que ele venha no corpo "body", da sua requisição voce deve especificar com o [FromBody],

Aqui temos um exemplo:

Usando [FromBody] Para forçar a API Web a ler um tipo simples do corpo da solicitação, adicione o atributo [FromBody] ao parâmetro:

C#

public HttpResponseMessage Post([FromBody] string name) { ... }

Neste exemplo, a API Web usará um formatador de tipo de mídia para ler o valor do nome do corpo da solicitação. Aqui está uma solicitação de cliente de exemplo.

Console

Copiar POST http://localhost:5076/api/values HTTP/1.1 User-Agent: Fiddler Host: localhost:5076 Content-Type: application/json Content-Length: 7

"Alice" --> aqui temos o valor da string name

Quando um parâmetro tem [FromBody], a API Web usa o cabeçalho Tipo de Conteúdo para selecionar um formatador. Neste exemplo, o tipo de conteúdo é "application/json" e o corpo da solicitação é uma cadeia de caracteres JSON bruta (não um objeto JSON).

No máximo, um parâmetro tem permissão para ler do corpo da mensagem. Portanto, isso não funcionará:

C#

// Caution: Will not work!public HttpResponseMessage Post([FromBody] int id, [FromBody] string name) { ... }

solução!

da uma olhada nesse site: que tem é mais especifico: https://docs.microsoft.com/pt-br/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api