Использование Axios POST для ASP.Net WEB API 2 с VB.NET - PullRequest
0 голосов
/ 28 февраля 2019

У меня проблемы с чтением данных Axios json внутри моего контроллера VB.NET Web API 2.Я отправляю его как

var headers = {
        'Content-Type': 'application/json',
         'Access-Control-Allow-Origin': '*'
      }

  let url = 'https://.azurewebsites.net/api/SavePMIDdata/'
  axios.post(url, {
      params: {
        pmids: PMIDList,
        memberID: memberID
      }
    }, {
      'headers': headers
    })
    .then(function (response) {
      resultElement.innerHTML = generateSuccessHTMLOutput(response);
    })
    .catch(function (error) {
      resultElement.innerHTML = generateErrorHTMLOutput(error);
    });
} 

Информация о моем контроллере в моем WebAPIConfig:

   config.Routes.MapHttpRoute(
        name:="ActionApi",
        routeTemplate:="api/{controller}/{action}"
    )

, а мой класс контроллеров:

 Public Function PostValue(<FromBody()> ByVal data As JToken) As String

, и я попытался:

  Public Function PostValue(<FromBody()> ByVal data As string) As String

и

Public Function PostValue(<FromBody()> ByVal data As objJSON ) As String

с

   Public Class objJSON          
        Public Property pmids As String
        Public Property memberID As String
    End Class

Когда я отправляю его, я получаю статус 200 и, если я введу жестко закодированное возвращаемое значение, я получучто, но если я попытаюсь прочитать отправленные параметры, я получаю ноль.Я не думаю, что я читаю их правильно.

Если я пытаюсь сделать Dim JSON As JObject = JObject.Parse (data), я получу обратно

"Value cannot be null.\r\nParameter name: s"

Если это дублирующий вопроспожалуйста, пришлите меня к нему, потому что я не могу его найти.Я искал три дня.Я сталкивался с несколькими вещами близко, но я не могу заставить VB работать.Я пытаюсь преобразовать старый код .asmx в более новую структуру.Спасибо за помощь.

1 Ответ

0 голосов
/ 28 февраля 2019

После нескольких дней настройки я создал то, что работает.Я не уверен на 100%, что это лучшая практика, и хотел бы получить информацию от любого, кто может дать мне информацию.

Сначала я изменил свой

axios.post(url, {
      params: {
        pmids: PMIDList,
        memberID: memberID
      }
    }, {
      'headers': headers
    })

на

axios.post (url, {
pmids: PMIDList, memberID: memberID
}, {'headers': headers})

Я удалил параметры: {}

Далее в моем контроллере я использовал:

Public Function PostValue(<FromBody()> ByVal value As objJSON) As String
            Dim x = value.pmids.ToString
            return (x)
End Function

Теперь он возвращает строку pmids, которая была отправлена ​​в axios POST.Я счастлив и теперь могу двигаться дальше.Если бы существовал стандарт лучшей практики, я бы с удовольствием выучил.

...