C # Api Get Route не может получить коллекцию строк.Нужна помощь в передаче данных - PullRequest
0 голосов
/ 27 октября 2018

Я написал следующий get api Route в C #, который выглядит следующим образом ...

    [HttpGet]
    [Route("ReadAllAppBased")]
    public List<Feedback> ReadAllAppBased(IEnumerable<string> Apps, string CAT)
    { 
            return null;
    }

, но когда я отправляю HTTP-запрос в JS, я не вижу свою коллекцию.Пожалуйста, смотрите следующий код для JS.следующий ...

    axios.get('http://localhost:63464/api/FeedBack/ReadAllAppBased',
    {
        params: { Apps: ["TESTING 3", "TESTING 123"], CAT: "TESTING" }
    })
    .then(res => {
        return res.data;
    })
    .then(res => {
        console.table(res);
    });

Пожалуйста, знайте, что я нажимаю на вызов в C #.Я не могу видеть данные, поступающие в приложения.Я могу видеть данные для CAT.

Хотелось бы узнать, как я могу это исправить, поскольку мне нужно иметь возможность отправлять коллекцию строк, которые должны быть получены в C # от JS.

Ответы [ 3 ]

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

Можете ли вы попробовать отправить следующий URL-адрес на ваш запрос в axios, пожалуйста ...

axios.get("/api/FeedBack/ReadAllAppBased?Apps=TESTING%203&Apps=TESTING%20123&CAT=TESTING")
.then(res => {
    return res.data;
})
.then(res => {
    console.table(res);
});

Для получения дополнительной информации о параметрах привязки см. Передача массива целых чисел в ASP.NET Web.API?

0 голосов
/ 29 июня 2019

Отсутствовал [Из маршрута] до параметров функции

    [HttpGet]
    [Route("ReadAllAppBased")]
    public List<Feedback> ReadAllAppBased([From Query]IEnumerable<string> Apps, [From Query] string CAT)
    { 
            return null;
    }

, тогда на стороне JS мне нужно было бы отправить то, что предложил @robsonrosa.

0 голосов
/ 27 октября 2018

Попробуйте использовать JSON.stringify следующим образом:

var data= {};
data.Apps= ["TESTING 3", "TESTING 123"];
data.CAT= "TESTING";
var dataJson= JSON.stringify(data);

Затем передайте dataJson в качестве параметра.

Редактировать: Забыл учесть изменения на стороне сервера.Измените параметр IEnumerable<string> Apps в вашем ReadAllAppBased на string dataJson, а в axios.get замените params деталь на params: { dataJson: dataJson }.

В своем методе ReadAllAppBased используйте Newtonsoft.Json следующим образом:

var params = JsonConvert.DeserializeObject<DataJson>(dataJson);

Где ваш класс DataJson выглядит следующим образом:

class DataJson{ public List<string> Apps {get; set;} public string CAT {get; set;} }

Теперь вы params должны содержать Apps &CAT.

Надежда помогает.

Примечание: поскольку вы отправляете коллекцию, вам лучше рассмотреть возможность использования метода axios.post, поскольку ваши параметры могут быть слишком длинными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...