web-dev-qa-db-fra.com

Passage d'un tableau JSON à l'API Web MVC via GET

Je sais qu'il existe des tonnes de réponses à ce sujet, mais je n'ai pas trouvé de solution à mon problème . J'ai une API Web ASP.NET MVC qui ressemble à ceci:

    [HttpGet]
    public IList<Country> GetCountryList(List<long> idList)

Et j'ai essayé de l'appeler comme ça:

    $.ajax({
        dataType: "json",
        data: JSON.stringify({idList: listOfIds}),            
        type: "GET",
        url: "api/v1/util/CountryList",
        success: function (result) {
            alert(result);
        }
    });

L'URL ressemble alors à ceci:

https://localhost/supertext/api/v1/util/CountryList?{%22idList%22:[46,14,62,83,120]}

Alternative:

    $.ajax({
        dataType: "json",
        data: {
            idList: JSON.stringify(listOfIds),
        }          
        type: "GET",
        url: "api/v1/util/CountryList",
        success: function (result) {
            alert(result);
        }
    });

URL:

https://localhost/supertext/api/v1/util/CountryList?idList=%5B46%2C14%2C62%2C83%2C120%5D

Les deux méthodes ne fonctionnent pas.

Dois-je vraiment l'envoyer et le recevoir sous forme de chaîne ou utiliser POST?

27
Remy

Non, n'essayez pas d'envoyer JSON dans une requête GET. Utilisez JSON avec d'autres verbes ayant un corps, tels que POST et PUT. 

Faites-le de manière standard, en décorant votre paramètre d'action avec l'attribut [FromUri]:

public IList<Country> GetCountryList([FromUri] List<long> idList)
{
    ...
}

puis déclenchez simplement la requête AJAX:

$.ajax({
    url: 'api/v1/util/CountryList',
    type: 'GET',
    data: { idList: [1, 2, 3] },
    traditional: true,
    success: function (result) {
        console.log(JSON.stringify(result));
    }
});

Autres lectures recommandées sur le fonctionnement de la liaison de modèle dans l’API Web:

http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1

54
Darin Dimitrov

** Voici deux paramètres Enum et objSearch **

var Enum = "ABCD";

var objSearch = [
              {"Name":"Navjot Angra","Age":23},
              {"Name":"Nav","Age":22}];

// c'est la méthode ajax  

$ .ajax ({

   type: "GET",
   var GatwayUrl ='http//2937/' (//Your url)
   url: GatwayUrl + 'api/Certificate/GetDetail/?Enum=' + Enum +'+&objSearch='+ JSON.stringify(objSearch),
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function (result) {
     if (result) {
        alert("Your Code");    
        }       }
});

// cette partie est une partie web api

[HttpGet]

public IHttpActionResult Fetch ([FromUri] chaîne Enum, [FromUri] chaîne objSearch) {

IHttpActionResult action = null; Action de retour;

}

0
Nav