Параметр POST для ASP.NET Core API в JSON.stringify всегда равен нулю (я не хочу создавать или связывать модель для параметра) - PullRequest
0 голосов
/ 24 апреля 2019

Этот вопрос кажется копией Параметр ASP.NET Core API POST всегда равен нулю этой ссылки, но я перепробовал все параметры, приведенные для этого вопроса.

Mine axiosвызов.

let finalData = JSON.stringify(data);
axios.post("url",{ headers: { "Content-Type": "application/json" }},{data:finalData});

finalData after JSON.stringyfy =
{"test1":{"name":"abc","id":1},"test2":{"name":"xyz","id":1}}

Основной контроллер

[HttpPost]
public IActionResult doSomething(string data)
{
 ...mine logic
}

Ответы [ 3 ]

1 голос
/ 25 апреля 2019

Я не уверен, почему вы не хотите использовать привязку модели, которая помогает легко принимать значения на стороне сервера.Но если вы хотите получить необработанные данные, а затем десериализовать их вручную, один из способов - выполнить пользовательскую обработку запроса.*

[HttpPost]
public async Task<IActionResult> Test()
{
    using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
    {
        var result  =  await reader.ReadToEndAsync();
    }
    .....
}

Но я бы всегда предлагал вместо этого использовать привязку модели.

0 голосов
/ 03 мая 2019

Вы можете использовать объект Formdata:

let finalData = JSON.stringify(data);
var formData = new FormData();    
fd.append( 'data',  finalData);

$.ajax({
  url: 'url',
  data: formData,
  processData: false,
  contentType: false,
  type: 'POST',
  success: function(data){
    //TODO: use reponse from API
  }
});

Надеюсь, вы найдете это полезным.

0 голосов
/ 30 апреля 2019

в указанном вами формате произошла ошибка.

Вы можете попробовать это.

   return axios.get(url, {
          params: data,
          headers: {'yl-authorization': this.token}//设置header信息
        }).then((res) => {
        })
...