Je souhaite transmettre des paramètres à HttpTrigger Type dans Azure Function 2. Je vois une réponse pour la fonction Azure 1 dans le lien ci-dessous.
Comment passer des paramètres par POST à une fonction Azure?
La réponse dans le lien ci-dessus est wait req.Content.ReadAsAsync ();
Je cherche la réponse similaire pour Azure Function 2.
Ici, nous utilisons la classe HttpRequest au lieu de la classe HttpRequestMessage.
Voici le code.
public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string data = .............; }
3 Réponses :
public static async void Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log) { var content = await new StreamReader(req.Body).ReadToEndAsync(); MyClass myClass = JsonConvert.DeserializeObject<MyClass>(content); } You can have a custom class which can be sent in the form of JSON from the post request.
Il semble que vous essayez d'envoyer une requête POST
à Azure Function V2
. Consultez l'extrait de code ci-dessous.
Classe de demande personnalisée:
public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); //Read Request Body var content = await new StreamReader(req.Body).ReadToEndAsync(); //Extract Request Body and Parse To Class Users objUsers = JsonConvert.DeserializeObject<Users>(content); //Post Reuqest to another API HttpClient client = new HttpClient(); var json = JsonConvert.SerializeObject(objUsers); //Parsing json to post request content var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json"); //Posting data to remote API HttpResponseMessage responseFromApi = await client.PostAsync("YourRequstURL", stringContent); //Variable for next use to bind remote API response var remoteApiResponse = ""; if (responseFromApi.IsSuccessStatusCode) { remoteApiResponse = responseFromApi.Content.ReadAsStringAsync().Result; // According to your sample, When you read from server response } //As we have to return IAction Type So converting to IAction Class Using OkObjectResult We Even Can Use OkResult var result = new OkObjectResult(remoteApiResponse); return (IActionResult)result; }
Fonction Azure V2:
Dans cet exemple, je prends deux paramètres en utilisant une classe personnalisée et je renvoie cette propriété de deux classes comme réponse.
{ "Name": "Kiron" , "Email": "kiron@email.com" }
Demander un échantillon:
public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); //Read Request Body var content = await new StreamReader(req.Body).ReadToEndAsync(); //Extract Request Body and Parse To Class Users objUsers = JsonConvert.DeserializeObject<Users>(content); //As we have to return IAction Type So converting to IAction Class Using OkObjectResult We Even Can Use OkResult var result = new OkObjectResult(objUsers); return (IActionResult)result; }
Test PostMan:
Remarque: Vous recherchez
wait req.Content.ReadAsAsync ();
ceci en fait nécessaire pour envoyer une requêtePOST
depuis votre fonction. Et lire sur ce serveur répond. Mais rappelez-vous quereq.Content
n'est pas pris en charge en tant que demande de lecture de message dansAzure Function V2
qui a montré l'exemple deFunction V1
ici
Un autre exemple:
Voir l'extrait de code ci-dessous:
public class Users { public string Name { get; set; } public string Email { get; set; } }
J'espère que vous comprenez, si vous avez encore des questions, n'hésitez pas à les partager. Merci et bon codage!
un avantage à utiliser un DTO personnalisé pour simplement dynamique
comme JObject
?
@l --'''''--------- '' '' '' '' '' '' Pour autant que je sache, vous pouvez également utiliser dynamic car il est de type sécurisé, mais si vous savent déjà quel type de données il serait préférable d’utiliser à la place. Lorsque nous utilisons un compilateur dynamique, nous devons rechercher chaque type de données, ce qui est un peu coûteux.
Dans un premier temps, créez un projet de fonction Azure (ou ajoutez à votre solution) basé sur la demande HTTP. déclencheur. Dans la classe unique sur le projet créé, vous pouvez voir un exemple. Vous avez transmis JSON à partir du corps de la requête:
public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); string name = data.name; ...
et le convertissez simplement en variable dans votre code:
{"name":"John"}