Com o curl, como posso passar vários parâmetros de linha de comando em um POST?

0

Eu tenho o seguinte controlador:

public IActionResult Post([FromQuery] int Width, [FromQuery] int Height, [FromForm] IFormFile Image)

Com o Insomnia / Postman, posso fazer um comando post e passar os parâmetros width / height no URL.

Estou tentando fazer o mesmo com o CURL, mas o segundo parâmetro não é visto. Neste caso, a altura será 0

curl -F [email protected] test/thumbnail?width=320&height=240

Nesse caso, a largura será 0

curl -F [email protected] test/thumbnail?height=240&width=320

O que estou perdendo?

    
por Thomas 09.05.2018 / 00:00

1 resposta

0

O problema mais provável é que & é um caractere especial no seu macOS shell (o interpretador da linha de comando); se for deixado sem aspas, ele atua como um separador de comando e executa o comando anterior em segundo plano. O resto ( height=240 ) é interpretado como um comando segundo pelo macOS.

Portanto, o parâmetro com & deve ser citado ou o próprio & deve ter escapado com uma barra invertida:

"test/thumbnail?height=240&width=320"
test/thumbnail?height=240\&width=320
test/thumbnail?height=240"&"width=320
test/thumbnail?'height=240&width=320'
etc.

( ? também é especial porque é um caractere curinga, mas isso é um problema se corresponder a um nome de arquivo real no sistema local).

Os comentários que sugerem -d não estão corretos. Por um lado, eles enviam parâmetros como carga útil do POST - mas o controlador quer parâmetros de string de consulta (GET), o que não é a mesma coisa. Por outro lado, o pedido só pode usar um formato de cada vez - não é possível misturar -F e -d no mesmo pedido.

    
por 09.05.2018 / 07:15

Tags