See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 27609|Vastuse: 3

[WebAPI] WebAPI ei saa siduda mitut parameetrit (SB ja SB1) päringu sisuga

[Kopeeri link]
Postitatud 16.08.2016 13:52:38 | | | |



WebAPI-s saab päringu keha (HttpContent) lugeda ainult korra, mitte vahemällu salvestada ja seda saab lugeda ainult edasi.

Näiteks:

1. Taotluse aadress: /?id=123&name=bob

    Serveripoolne meetod: void Action(int id, string name) // Kõik parameetrid on lihtsad tüübid, seega tulevad need kõik URL-ist

2. Taotluse aadress: /?id=123&name=bob

    Serveripoolne meetod: void Action([FromUri] int id, [FromUri] string name) // Sama mis eespool

                      void Action([FromBody] string name); [FormBody] atribuut näitab, et kogu keha loetakse stringina argumendina

3. Taotluse aadress: /?id=123

    Klassi määratlus:

public class Customer { // Kompleksne objektitüüp, mis on määratletud
  public string Name { get; seatud; }
  public int Age { get; seatud; }
}

    Serveripoolne meetod: void Action(int id, Customer c) // Parameetri id loetakse päringustringist, parameeter c on keerukas kliendi objektiklass, mida loetakse kehast läbi vorminduse

    Serveripoolne meetod: tühja tegevus (Klient c1, Klient c2) // Viga! Mitmed parameetrid on keerulised tüübid ja kõik püüavad lugeda kehast, mida saab lugeda vaid korra

    Serveripoolne meetod: void action([FromUri] Klient c1, Klient c2) // Jah! Erinevalt eelnevast toimingust loetakse komplekstüüpi C1 URL-ist ja C2 kehast

4. ModelBinder meetod:

void Action([ModelBinder(MyCustomBinder)] SomeType c) // Näitab, et parameetri lahendamiseks kasutatakse konkreetset mudeli binderit

[ModelBinder(MyCustomBinder)] avalik klass SomeType { } // Rakenda see reegel kõigile SomeType tüübi parameetritele, määrates [ModelBidner(MyCustomBinder)] atribuudi konkreetsele tüübile SomeType

void Action (SomeType c) // Kuna c tüüp on SomeType, rakendatakse SomeType'i omadusi selle mudeli sidumise määramiseks



Kokkuvõte:

1. Vaikimisi lihtsad parameetrid läbivad URL-i parameetrid, eranditega:

1.1 Kui marsruut sisaldab id-parameetrit, läbib id parameeter marsruudi;

1.2 Kui parameeter on märgitud kui [FromBody], võib parameeter olla lihtne parameeter ning klient saab selle edastada POST-i kaudu: $.ajax(url, '=value') või $.ajax({url: url, data: {'': 'value'}});

2. Vaikimisi komplekssed parameetrid (kohandatud entiteediklassid) edastatakse POST-i kaudu, eranditega:

2.1 Kui parameetri väärtus on märgitud kui [FromUri], võib parameeter olla kompleksne parameeter;

3. Parameeter märgiga [FromBody] võib ilmuda ainult korra, parameeter, mis on märgitud kui [FromUri], võib esineda mitu korda ning kui parameeter on märgitud kui [FromUri], on lihtne parameeter, saab sildi eemaldada.




Eelmine:.NET Oracle mitme tabeli päringumeetod, rumal meetod.
Järgmine:C# kasutab peegeldust, et määrata, kas omadus on määratud
Postitatud 16.08.2016 15:21:29 |
ModelBinderil peaks olema funktsiooniklass ModelBinderAttribute jaoks

Sarnane filtritega
Postitatud 16.08.2016 15:21:44 |
Tule iga päev külla
Postitatud 16.08.2016 15:22:00 |
Anna mulle natuke prestiiži
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com