close
دانلود آهنگ جدید
انواع پارامترها برای RestRequest قسمت 4 (RestSharp)

یک توسعه دهنده .Net

انواع پارامترها برای RestRequest قسمت 4 (RestSharp)

پس از اینکه RestRequest را ایجاد کردید، می توانید پارامتر ها را به آن اضافه کنید.  در حال حاضر  6 نوع (Type)  پشتیبانی شده و رفتار آنها هنگام استفاده از پیاده سازی IHttt به طور پیش فرض است شرح خواهم داد. Cookie(کوکی) پارامتر را به لیست کوکیهایی که همراه با درخواست ارسال می شوند اضافه می کند. نام کوکی نام پارامتر است و مقدار Value (.ToString) است که شما در آن گذشتید. HttpHeader پارامتر را به عنوان یک هدر HTTP همراه با درخواست ارسال می کند. نام هدر نام پارامتر است و مقدار…

انواع پارامترها برای RestRequest قسمت 4 (RestSharp)

انواع پارامترها برای RestRequest قسمت 4 (RestSharp) 321

پس از اینکه RestRequest را ایجاد کردید، می توانید پارامتر ها را به آن اضافه کنید. 

در حال حاضر  6 نوع (Type)  پشتیبانی شده و رفتار آنها هنگام استفاده از پیاده سازی IHttt به طور پیش فرض است شرح خواهم داد.



Cookie(کوکی)

پارامتر را به لیست کوکیهایی که همراه با درخواست ارسال می شوند اضافه می کند. نام کوکی نام پارامتر است و مقدار Value (.ToString) است که شما در آن گذشتید.


HttpHeader

پارامتر را به عنوان یک هدر HTTP همراه با درخواست ارسال می کند. نام هدر نام پارامتر است و مقدار هدر  Value است.

توجه داشته باشید که برخی از هدرهای محدود وجود دارند که ممکن است متفاوت رفتار کنند یا به سادگی نادیده گرفته شوند. لطفا به فرهنگ لغت _restrictedHeaderActions در Http.cs نگاه کنید تا ببینید کدام هدر ها خاص هستند و چگونه رفتار می کنند.



GetOrPost

رفتار متفاوتی بر اساس متد (Get یا Post) دارد.

اگر شما یک GET  را اجرا کنید،RestSharp پارامترها را به Url در فرم  اضافه می کند “url?name1=value1&name2=value2”.

در درخواستهای POST یا PUT، این بستگی به این دارد که آیا فایلهای پیوست شده به درخواست دارید یا نه.
اگر نه، پارامترها به عنوان بدنه درخواست  در فرم  ارسال می شود 
"name1 = value1 و name2 = value2". همچنین درخواست به عنوان application / x-www-form-urlencoded ارسال می شود.

در هر دو مورد، نام و مقدار بصورت خودکار UrlEncoded می شوند.


اگر فایل (ها) دارید، RestSharp یک درخواست multipart/form-data ارسال می کند. پارامترهای شما بخشی از این درخواست در فرم هستند:

 


Content-Disposition: form-data; name="parameterName" ParameterValue



UrlSegment

بر خلاف GetOrPost، این ParameterType مقادیر  را  مکان های نگهدارنده مشخص (placeholder) در RequestUrl جایگزین می کند:

 


var request = new RestRequest("health/{entity}/status");
request.AddParameter("entity", "s2", ParameterType.UrlSegment);


هنگامی که درخواست اجرا می شود، RestSharp سعی خواهد کرد که هر {placeholder} با یک پارامتر از آن نام (بدون {} را مطابقت داده و آن را با مقدار جایگزین کند. بنابراین کد بالا به "health/s2/status" که Url است، منجر می شود.



RequestBody

اگر این پارامتر تنظیم شود، مقدار آن به عنوان بدنن درخواست ارسال می شود. تنها یکی از پارامتر RequestBody پذیرفته شده است - اولین مورد.


نام پارامتر به عنوان Content-Type هدر برای درخواست استفاده می شود.
RequestBody در درخواستهای GET یا HEAD کار نمی کند، زیرا آنها در واقع بدنه را ارسال نمی کنند.


اگر پارامترهای GetOrPost را نیز داشته باشید، RequestBody را بازنویسی کنید - RestSharp آنها را ترکیب نمی کند، بلکه به جای آن پارامتر RequestBody را پر می کند.



QueryString

این کار مانند GetOrPost کار می کند، به جز اینکه همیشه پارامترها را به Url در فرم "url?name1=value1&name2=value2"، صرف نظر از روش درخواست، می افزاید.


یک مثال کلی

 

 

var client = new RestClient("http://example.com"); // client.Authenticator = new HttpBasicAuthenticator(username, password); var request = new RestRequest("resource/{id}", Method.POST); request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method request.AddUrlSegment("id", "123"); // replaces matching token in request.Resource // easily add HTTP Headers request.AddHeader("header", "value"); // add files to upload (works with compatible verbs) request.AddFile(path); // execute the request IRestResponse response = client.Execute(request); var content = response.Content; // raw content as string // or automatically deserialize result // return content type is sniffed but can be explicitly set via RestClient.AddHandler(); RestResponse<Person> response2 = client.Execute<Person>(request); var name = response2.Data.Name; // easy async support client.ExecuteAsync(request, response => { Console.WriteLine(response.Content); }); // async with deserialization var asyncHandle = client.ExecuteAsync<Person>(request, response => { Console.WriteLine(response.Data.Name); }); // abort the request on demand asyncHandle.Abort();