ვთქვათ, უნდა მოვიპოვოთ მონაცემები ვებგვერდიდან, რომლის ხელით შეგროვება არაპრაქტიკული ან შეუძლებელია მისი მოცულობის გამო. ამ შემთხვევაში, ჩვენ შეგვიძლია პროცესის ავტომატიზაცია ქვემოთ აღწერილი ხელსაწყოების გამოყენებით.
ითხოვს ბიბლიოთეკასპითონის ბიბლიოთეკა სერვერზე მოთხოვნების გასაკეთებლად და პასუხების დასამუშავებლად. პარსინგის სცენარის საფუძველი და ჩვენი მთავარი იარაღი. ამ ბიბლიოთეკის გამოყენებით ჩვენ ვიღებთ გვერდის შინაარსს html ფორმაშემდგომი გარჩევისთვის.
იმპორტის მოთხოვნების პასუხი = მოთხოვნები. get ("https://ya.ru" ) # get-request print (response . text ) # output page contents payload = ( "key1" : "value1" , "key2" : "value2" ) answer = მოთხოვნები . მიიღეთ ("http://httpbin.org/get" , params = payload ) # მოთხოვნა პარამეტრებთან ერთად headers = ( "user-agent" : "my-app/0.0.1" ) answer = მოთხოვნები . get (url, headers = headers) # მოთხოვნა კონკრეტული html სათაურებით
APIაპლიკაციის პროგრამირების ინტერფეისი - პროგრამული ინტერფეისივებ აპლიკაციის მფლობელის მიერ სხვა დეველოპერებისთვის მიწოდებული აპლიკაცია. API-ს არარსებობა, რომელსაც შეუძლია ჩვენი მოთხოვნილებების დაკმაყოფილება, არის პირველი, რაშიც უნდა დავრწმუნდეთ, სანამ ვიჩქარებთ გვერდის წყაროს კოდის გაანალიზებას და მასზე პარსერის დაწერას. ბევრ პოპულარულ საიტს აქვს საკუთარი API და დოკუმენტაცია, რომელიც განმარტავს, თუ როგორ გამოიყენოთ იგი. ჩვენ შეგვიძლია გამოვიყენოთ api ამ გზით - ვქმნით http მოთხოვნას დოკუმენტაციის მიხედვით და ვიღებთ პასუხს მოთხოვნის გამოყენებით.
BS4Beautifulsoup4 არის ბიბლიოთეკა html და xml დოკუმენტები. გაძლევთ პირდაპირ წვდომას ნებისმიერი ტეგის შინაარსზე html-ში.
bs4-დან იმპორტი BeautifulSoup soup = BeautifulSoup (raw_html, "html.parser" ) print (suup . find ("p" , class_ = "some-class") . text ) # output ტეგის "p" შიგთავსი კლასთან ერთად "რაღაც კლასი"
სელენის ვებ დრაივერისაიტზე მონაცემების გენერირება შესაძლებელია დინამიურად Javascript-ის გამოყენებით. ამ შემთხვევაში შეუძლებელი იქნება ამ მონაცემების გარჩევა მოთხოვნის+bs4 გამოყენებით. ფაქტია, რომ bs4 აანალიზებს გვერდის წყაროს კოდს js-ის შესრულების გარეშე. js კოდის შესასრულებლად და გვერდის იდენტური მისაღებად, რომელსაც ბრაუზერში ვხედავთ, შეგიძლიათ გამოიყენოთ სელენის ვებ დრაივერი - ეს არის დრაივერების ნაკრები. სხვადასხვა ბრაუზერები, მიეწოდება ბიბლიოთეკებს ამ დრაივერებთან მუშაობისთვის.
რა უნდა გააკეთოს, თუ არსებობს ავტორიზაცია?session = requests.Session() data = ("login_username":"login", "login_password":"password") url = "http://site.com/login.php" answer = session.post(url, data =მონაცემები)
რა მოხდება, თუ საიტი აგიკრძალავთ ძალიან ბევრი მოთხოვნის გამო?- მოთხოვნებს შორის დაყოვნების დაყენება:
answer = requests.get(url, timeout=(10, 0.01)) # კავშირის დრო ამოიწურა, წაკითხვის ვადა (წამებში)
- წარმოადგინეთ ბრაუზერი, რომელიც იყენებს სელენის ვებ დრაივერს ან გადასცემს მომხმარებლის აგენტის სათაურის შიგთავსს მოთხოვნის შესაქმნელად:
user_agent = ("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) " "Gecko/20100101 Firefox/50.0") მოთხოვნა = requests.get(url, headers=("User-Agent":user_agent)
- პროქსის გამოყენება:
აღწერილი ობიექტი ძალიან სასარგებლოა და ძლიერი ინსტრუმენტი. ამ ობიექტს აქვს რამდენიმე მეთოდი, მათი აღწერა მოცემულია ქვემოთ:
კოლექციები: მეთოდები: თვისებები: პასუხი.ქუქის კოლექციაქუქიების კოლექცია ადგენს ქუქიების მნიშვნელობებს. თუ მითითებული ქუქიები არ არსებობს, ის ქმნის მათ. თუ ქუქი არსებობს, ის იღებს ახალ მნიშვნელობას და ანადგურებს ძველს.
Response.Cookies(cookie) [(გასაღები) | . ატრიბუტები ] = მნიშვნელობა
პარამეტრები:
- ქუქი - ქუქი-ფაილის სახელი
- გასაღები - არჩევითი პარამეტრი. თუ მითითებულია, მაშინ ქუქი არის დირექტორია (ჩასმული) და გასაღები არის მნიშვნელობების ნაკრები.
- ატრიბუტები - მითითებული ინფორმაცია თავად ქუქიების შესახებ. ეს პარამეტრი შეიძლება იყოს ერთ-ერთი შემდეგი:
- მნიშვნელობა - განსაზღვრავს მნიშვნელობას, რომელიც უნდა მიენიჭოს ამ კლავიშს ან ატრიბუტს.
სახელი | აღწერა |
დომენი | მხოლოდ ჩაწერა. თუ მითითებულია, ქუქიები იგზავნება მხოლოდ ამ დომენის მოთხოვნით. |
იწურება | მხოლოდ ჩაწერა. თარიღი, როდესაც ქუქი-ფაილი იწურება. ეს თარიღი უნდა იყოს მითითებული იმისათვის, რომ ქუქი-ფაილები ჩაიწეროს კლიენტზე მყარი დისკისესიის დასრულების შემდეგ. თუ ეს ატრიბუტი არ არის დაყენებული, მაშინ ჩაითვლება ქუქიის ვადის გასვლის თარიღი მიმდინარე თარიღი. ქუქი-ფაილებს ვადა ეწურება სესიის დასრულებისთანავე. |
HasKey | მხოლოდ წაკითხული. მიუთითებს შეიცავს თუ არა ქუქი მოცემულ გასაღებს. |
ბილიკი | მხოლოდ ჩაწერა. თუ მითითებულია, ქუქი-ფაილები იგზავნება მხოლოდ მოთხოვნის შემთხვევაში ამ ბილიკიდან. თუ პარამეტრი არ არის დაყენებული, გამოიყენება აპლიკაციის გზა. |
უსაფრთხო | მხოლოდ ჩაწერა. მიუთითებს დაცული იქნება თუ არა ქუქიები. |
კომენტარი:
თუ გასაღების ქუქი იქმნება, როგორც ნაჩვენებია შემდეგ სკრიპტში,
შემდეგ გაიგზავნება შემდეგი სათაური:
Set-Cookie:MYCOOKIE=TYPE1=შაქარი&TYPE2=ნამცხვრები
თუ თქვენ მიანიჭებთ მნიშვნელობას mycookie-ს კლავიშების გამოყენების გარეშე, მაშინ ეს ქმედება გაანადგურებს type1 და type2 კლავიშებს. მაგალითად:
წინა მაგალითში, კლავიშები type1 და type2 განადგურდება და მათი მნიშვნელობები დაიკარგება. Mycookie ახლა შეიცავს შოკოლადის მარშმლოუს მნიშვნელობას.
თქვენ ასევე შეგიძლიათ შეამოწმოთ კონკრეტული გასაღების არსებობა შემდეგი გზით:
თუ TRUE არის ნაჩვენები, მაშინ ასეთი გასაღები არსებობს, თუ FALSE არ არსებობს.
პასუხი.ჩაწერის მეთოდიპასუხი. ჩაწერეთ ცვლადი_ან_მნიშვნელობა
პარამეტრები:
- variable_or_value - მონაცემები, რომლებიც გამოჩნდება ბრაუზერის ეკრანზე HTML-ის საშუალებით. ეს პარამეტრი შეიძლება იყოს ნებისმიერი ტიპის, რომელსაც მხარს უჭერს VisualBasic Scripting Edition. ანუ მონაცემები შეიძლება იყოს შემდეგი ტიპის: თარიღი, სტრიქონი, სიმბოლო, რიცხვითი მნიშვნელობები. მნიშვნელობა ამ პარამეტრსარ შეიძლება შეიცავდეს %> კომბინაციებს. ამის ნაცვლად, შეგიძლიათ გამოიყენოთ ექვივალენტური კომბინაცია %\>. სკრიპტის შესრულებისას ვებ სერვერი ამ თანმიმდევრობას საჭიროდ გადააქცევს.
შემდეგი მაგალითი გვიჩვენებს, თუ როგორ მუშაობს Response.write მეთოდი კლიენტისთვის შეტყობინების გამოსატანად.
უბრალოდ გეტყვი: და შენი სახელი
შემდეგი მაგალითი ამატებს HTML ტეგს ვებ გვერდზე. ვინაიდან ეს მეთოდი არ შეიძლება შეიცავდეს %> კომბინაციას, ჩვენ ვიყენებთ თანმიმდევრობას %\>. ასე რომ, მაგალითი სკრიპტი:
გამომავალი იქნება ხაზი:
160 | ათწილადი მნიშვნელობა ობიექტის აღწერა | |
60 | < | უწყვეტი სივრცე |
62 | > | ნაკლები ვიდრე |
38 | & | მეტი ვიდრე |
162 | ¢ | ამპერსანდი |
163 | £ | ცენტ |
165 | ¥ | ლბ |
8364 | € | იენა |
167 | § | ევრო |
169 | პარაგრაფი | |
174 | ® | საავტორო უფლება |
8482 | ™ | რეგისტრირებული სავაჭრო ნიშანი |
. თქვენი აპლიკაციის შექმნისას, ფრთხილად იყავით დაშიფვრეთ გვერდის გამომავალი მნიშვნელობები, სანამ არ გაგზავნით მათ საბოლოო მომხმარებლის ბრაუზერში.
კონტროლერებისგან პასუხის გენერირება
მაგალითად, HTML პასუხის გასაგზავნად, თქვენ უნდა შექმნათ და შეადგინოთ HTML მონაცემები და შემდეგ გაუგზავნოთ კლიენტს Response.Write() მეთოდის გამოყენებით. ანალოგიურად, მომხმარებლის ბრაუზერის სხვა URL-ზე გადასატანად, თქვენ უნდა გამოიძახოთ Response.Redirect() მეთოდი და გადასცეთ მას საჭირო URL. ორივე მიდგომა ნაჩვენებია ქვემოთ მოცემულ კოდში, რომელიც აჩვენებს BasicController კლასის გაფართოებებს, რომელიც ჩვენ შევქმენით წინა სტატიაში IController ინტერფეისის განხორციელებით:
System.Web.Mvc-ის გამოყენებით; System.Web.Routing-ის გამოყენებით; სახელთა სივრცის ControllersAndActions.Controllers ( საჯარო კლასი BasicController: IController ( საჯარო void Execute(RequestContext requestContext) ( string controller = (string)requestContext.RouteData.Values["controller"]; string action = (string)requestDataxt"Routeaction. "]; if (action.ToLower() == "გადამისამართება") ( requestContext.HttpContext.Response.Redirect ("/წარმოებული/ინდექსი"); ) else ( requestContext.HttpContext.Response.Write(string.Format("კონტროლერი : (0), მოქმედების მეთოდი: (1)", კონტროლერი, მოქმედება)); ) ) )
იგივე მიდგომა შეიძლება გამოყენებულ იქნას Controller კლასიდან კონტროლერის მემკვიდრეობის შემთხვევაში. HttpResponseBase კლასი, რომელიც ბრუნდება, როდესაც requestContext.HttpContext.Response თვისება წაიკითხება Execute() მეთოდით, ხელმისაწვდომია Controller.Response თვისებით, როგორც ნაჩვენებია ქვემოთ მოცემულ მაგალითში, რომელიც აფართოებს DerivedController კლასს, რომელიც ასევე ადრე შეიქმნა. მემკვიდრეობა Controller კლასიდან:
სისტემის გამოყენება; System.Web-ის გამოყენებით; System.Web.Mvc-ის გამოყენებით; სახელთა სივრცე ControllersAndActions.Controllers ( საჯარო კლასი DerivedController: Controller ( public ActionResult Index() ( // ... ) public void ProduceOutput() ( if (Server.MachineName == "ProfessorWeb") Response.Redirect("/Basic/Index" else Response.Write("Controller: Derived, Action მეთოდი: ProduceOutput");
ProduceOutput() მეთოდი იყენებს Server.MachineName თვისების მნიშვნელობას, რათა გადაწყვიტოს რა პასუხი გაუგზავნოს კლიენტს. ("ProfessorWeb" არის ჩემი განვითარების მანქანის სახელი.)
მიუხედავად იმისა, რომ მომხმარებლისთვის პასუხის გენერირების ეს მიდგომა მუშაობს, მას აქვს რამდენიმე პრობლემა:
კონტროლერის კლასები უნდა შეიცავდეს HTML ან URL სტრუქტურის ინფორმაციას, რაც ართულებს კლასების წაკითხვას და შენარჩუნებას.
კონტროლერი, რომელიც წარმოქმნის პასუხს პირდაპირ გამომავალზე, რთულია ერთეულის ტესტირება. თქვენ დაგჭირდებათ იმიტირებული იმპლემენტაციების შექმნა საპასუხო ობიექტიდა შემდეგ შეძლოს კონტროლერიდან გამომავალი გამოსავლის დამუშავება, რათა დადგინდეს რა არის ეს. ეს შეიძლება ნიშნავდეს, მაგალითად, HTML მარკირების გაანალიზების აუცილებლობას საკვანძო სიტყვები, რაც ხანგრძლივი და დამღლელი პროცესია.
თითოეული პასუხის მცირე დეტალების ამ გზით დამუშავება რთული და შეცდომისკენ მიდრეკილია. ზოგიერთ პროგრამისტს მოსწონს აბსოლუტური კონტროლი, რომელიც უზრუნველყოფილია დაბალი დონის კონტროლერის აშენებით, მაგრამ ეს ჩვეულებრივ ძალიან სწრაფად რთულდება.
საბედნიეროდ, MVC Framework-ს აქვს მოსახერხებელი ინსტრუმენტი, რომელიც აგვარებს ყველა ამ პრობლემას - მოქმედებების შედეგებს. შემდეგი სექციები განმარტავს მოქმედების შედეგების კონცეფციას და აჩვენებს სხვადასხვა გზებიმისი გამოყენება კონტროლერებისგან პასუხების გენერირებისთვის.
მოქმედებების შედეგებიმოქმედების შედეგები MVC Framework-ში გამოიყენება განზრახვის განცხადებების განცალკევებისთვის განზრახვის შესრულებისგან (ბოდიშს გიხდით ტავტოლოგიისთვის). კონცეფცია მარტივი მოგეჩვენებათ, მას შემდეგ რაც გაიგებთ, მაგრამ გარკვეული დრო სჭირდება მის გაგებას გარკვეული არაპირდაპირის გამო.
საპასუხო ობიექტთან უშუალოდ ურთიერთობის ნაცვლად, მოქმედების მეთოდები აბრუნებს ActionResult-დან გამომდინარე კლასის ობიექტს, რომელიც აღწერს როგორი უნდა იყოს კონტროლერის პასუხი - მაგალითად, ხედის გადაცემა ან სხვა URL-ზე ან მოქმედების მეთოდზე გადამისამართება. თუმცა (ეს არის ძალიან ირიბი) პასუხი პირდაპირ არ არის გენერირებული. ამის ნაცვლად, იქმნება ActionResult ობიექტი, რომელსაც MVC Framework ამუშავებს შედეგის მისაღებად მოქმედების მეთოდის გამოძახების შემდეგ.
მოქმედების შედეგების სისტემა არის Command დიზაინის ნიმუშის მაგალითი. ეს ნიმუში წარმოადგენს სცენარებს, რომლებშიც ინახავთ და გადასცემთ ობიექტებს, რომლებიც აღწერს შესრულებულ ოპერაციებს.
როდესაც MVC Framework იღებს ActionResult ობიექტს ქმედების მეთოდიდან, ის იძახებს ExecuteResult() მეთოდი, განსაზღვრულია ამ ობიექტის კლასში. მოქმედების შედეგების განხორციელება შემდეგ მოქმედებს Response ობიექტზე, წარმოქმნის გამოსავალს, რომელიც შეესაბამება თქვენს განზრახვას. ამის საჩვენებლად, მოდით შევქმნათ საქაღალდე Infrastructure და დავამატოთ მას ახალი ფაილიკლასი სახელად CustomRedirectResult.cs მორგებული ActionResult განხორციელებით, რომელიც ნაჩვენებია ქვემოთ მოცემულ მაგალითში:
System.Web.Mvc-ის გამოყენებით; სახელთა სივრცის ControllersAndActions.Infrastructure ( საჯარო კლასი CustomRedirectResult: ActionResult ( საჯარო სტრიქონის URL ( მიიღეთ; დაყენება; ) საჯარო გადაფარვა void ExecuteResult (ControllerContext კონტექსტი) ( string fullUrl = UrlHelper.GenerateContentUrl.GenerateContentUrl.HerttpontextpcontextpContext. (fullUrl);
ეს კლასი ეფუძნება System.Web.Mvc.RedirectResult კლასის მუშაობას. ერთ-ერთი უპირატესობა ღია წყარო MVC Framework არის ყველაფერი იმის შესახებ, რომ შეძლოთ რაიმეს შიდა სამუშაოების შესწავლა. CustomRedirectResult კლასი გაცილებით მარტივია, ვიდრე მისი MVC ეკვივალენტი, მაგრამ საკმარისია ამ სტატიის მიზნებისთვის.
RedirectResult კლასის ინსტალაციისას, ჩვენ გადავცემთ URL-ს, რომელზეც მომხმარებელი უნდა გადამისამართდეს. ExecuteResult() მეთოდი, რომელიც შესრულდება MVC Framework-ის მიერ ქმედების მეთოდის დასრულებისას, იღებს Response ობიექტს მოთხოვნისთვის Framework-ის მიერ მოწოდებული ControllerContext ობიექტის მეშვეობით და იძახებს RedirectPermanent() მეთოდს ან Redirect() მეთოდს (ეს არის ზუსტად ის, რაც გაკეთდა IController-ის დაბალი დონის დანერგვის შიგნით, სტატიის წინა მაგალითში).
CustomRedirectResult კლასის გამოყენება ილუსტრირებულია ქვემოთ მოცემულ მაგალითში, რომელიც აჩვენებს ცვლილებებს, რომლებიც განხორციელდა მიღებული კონტროლერში:
// ... ControllersAndActions.Infrastructure-ის გამოყენებით; სახელთა სივრცის ControllersAndActions.Controllers ( საჯარო კლასი DerivedController: Controller ( public ActionResult Index() ( // ... ) public ActionResult ProduceOutput() ( if (Server.MachineName == "MyMachineName") დააბრუნებს ახალ CustomRedirectResult "/Ba Url/ ინდექსი"); else ( Response.Write("კონტროლერი: მიღებული, მოქმედების მეთოდი: ProduceOutput"); დააბრუნეთ null; ) ) ) )
გაითვალისწინეთ, რომ ჩვენ იძულებული გავხდით შეგვეცვალა მოქმედების მეთოდის შედეგი ActionResult-ის დასაბრუნებლად. ჩვენ ვაბრუნებთ null, თუ არ გვინდა, რომ MVC Framework-მა რაიმე გააკეთოს, როდესაც ჩვენი მოქმედების მეთოდი შესრულდება, რაც ჩვენ გავაკეთეთ, თუ CustomRedirectResult ინსტანცია არ დაბრუნდა.
ერთეულის ტესტირების კონტროლერები და მოქმედებები
MVC Framework-ის მრავალი ნაწილი შექმნილია იმისთვის, რომ გააადვილოს ერთეულის ტესტირება და ეს განსაკუთრებით ეხება მოქმედებებსა და კონტროლერებს. ამ მხარდაჭერის რამდენიმე მიზეზი არსებობს:
თქვენ შეგიძლიათ შეამოწმოთ მოქმედებები და კონტროლერები ვებ სერვერის გარეთ. კონტექსტურ ობიექტებზე წვდომა ხდება მათი საბაზისო კლასების მეშვეობით (როგორიცაა HttpRequestBase), რომლის დაცინვა ადვილია.
მოქმედების მეთოდის შედეგების შესამოწმებლად, თქვენ არ გჭირდებათ HTML მარკირების ანალიზი. იმის უზრუნველსაყოფად, რომ თქვენ მიიღებთ მოსალოდნელ შედეგებს, შეგიძლიათ შეამოწმოთ დაბრუნებული ActionResult ობიექტი.
კლიენტის მოთხოვნების ემულაცია არ არის საჭირო. MVC Framework-ის მოდელის სავალდებულო სისტემა საშუალებას გაძლევთ დაწეროთ მოქმედების მეთოდები, რომლებიც იღებენ შეყვანას მათ პარამეტრებში. მოქმედების მეთოდის შესამოწმებლად, თქვენ უბრალოდ დაურეკავთ მას პირდაპირ და მიაწოდებთ შესაბამისი პარამეტრის მნიშვნელობებს.
კონტროლერებისგან მონაცემების გენერირების შესახებ მომავალი სტატიები გაჩვენებთ, თუ როგორ უნდა შექმნათ ერთეულის ტესტები სხვადასხვა სახისმოქმედებების შედეგები.
არ დაგავიწყდეთ, რომ ერთეულის ტესტირება მხოლოდ სურათის ნაწილია. კომპლექსური ქცევა აპლიკაციაში ხდება მაშინ, როდესაც მოქმედების მეთოდები გამოიძახება თანმიმდევრულად. ერთეულის ტესტირება საუკეთესოდ მუშაობს სხვა ტესტირების მიდგომებთან ერთად.
ახლა, როცა იცით, როგორ მუშაობს გადამისამართების მოქმედების სპეციალური შედეგი, შეგიძლიათ გადახვიდეთ მის ეკვივალენტზე, რომელსაც გთავაზობთ MVC Framework, რომელიც უფრო ძლიერია და საფუძვლიანად არის გამოცდილი Microsoft-ის მიერ. მიღებული კონტროლერის საჭირო ცვლილება მოცემულია ქვემოთ:
// ... საჯარო ActionResult ProduceOutput() ( დააბრუნეთ ახალი RedirectResult ("/Basic/Index"); ) // ...
ამოღებულია მოქმედების მეთოდიდან პირობითი ოპერატორი, რაც ნიშნავს, რომ აპლიკაციის გაშვების და URL-ზე გადასვლის შემდეგ, როგორიცაა /Derived/ProduceOutput, ბრაუზერი გადამისამართდება URL-ზე, როგორიცაა /Basic/Index. სამოქმედო მეთოდის კოდის გასამარტივებლად, Controller კლასი მოიცავს გენერირების მოხერხებულ მეთოდებს სხვადასხვა სახის ActionResult ობიექტები. ასე რომ, მაგალითად, ჩვენ შეგვიძლია მივაღწიოთ იგივე ეფექტს, როგორც ზემოთ მოცემულ მაგალითში, Redirect() მეთოდის შედეგის დაბრუნებით:
// ... საჯარო ActionResult ProduceOutput() ( return Redirect ("/Basic/Index"); ) // ...
არაფერია განსაკუთრებით რთული მოქმედებების შედეგების სისტემაში, მაგრამ ის საბოლოოდ ეხმარება შექმნას უფრო მარტივი, სუფთა, უფრო თანმიმდევრული კოდი, რომელიც ადვილად წასაკითხი და ერთეულის ტესტირებაა. მაგალითად, გადამისამართების შემთხვევაში, შეგიძლიათ უბრალოდ შეამოწმოთ, რომ ქმედების მეთოდი აბრუნებს RedirectResult ინსტანციას, რომლის Url თვისება შეიცავს მოსალოდნელ სამიზნეს.
MVC Framework განსაზღვრავს მრავალი ჩაშენებული მოქმედების შედეგის ტიპს, რომლებიც აღწერილია ქვემოთ მოცემულ ცხრილში:
შედეგის ნახვა | ასახავს მითითებულ ან სტანდარტული ხედვის შაბლონს |
ნახვა () |
ნაწილობრივი ხედვის შედეგი | ასახავს მითითებულ ან სტანდარტული ნაწილობრივი ხედვის შაბლონს |
ნაწილობრივი ხედვა () |
RedirectToRouteResult | გასცემს HTTP 301 ან 302 გადამისამართებას ქმედების მეთოდზე ან მითითებული ჩანაწერიმარშრუტი, URL-ის გენერირება მარშრუტიზაციის კონფიგურაციის მიხედვით |
RedirectToAction() RedirectToActionPermanent() RedirectToRoute() RedirectToRoutePermanent() |
გადამისამართების შედეგი | გასცემს HTTP 301 ან 302 გადამისამართებას მოცემულ URL-ზე |
გადამისამართება () გადამისამართება მუდმივი() |
შინაარსი შედეგი | ბრაუზერში აბრუნებს არაფორმატირებული ტექსტის მონაცემებს, დამატებით აყენებს შინაარსის ტიპის სათაურს |
შინაარსი () |
ფაილის შედეგი | გადასცემს ორობით მონაცემებს (როგორიცაა ფაილი დისკზე ან ბაიტის მასივი მეხსიერებაში) პირდაპირ ბრაუზერში |
ფაილი () |
JsonResult | აწყობს .NET ობიექტს JSON-ში და აგზავნის პასუხად. ამ ტიპის პასუხები უფრო ხშირად წარმოიქმნება გამოყენებისას ვებ ინსტრუმენტები API და AJAX |
Json () |
JavaScriptResult | აგზავნის ფრაგმენტს წყარო კოდი JavaScript, რომელიც უნდა შესრულდეს ბრაუზერის მიერ |
JavaScript() |
Httpარაავტორიზებული შედეგი | აყენებს HTTP პასუხის სტატუსის კოდს 401-ზე (რაც ნიშნავს „არ არის ავტორიზებული“), რაც აიძულებს ავთენტიფიკაციის მექანიზმს მოქმედებაში (აყალიბებს ავთენტიფიკაციას ან ვინდოუსის ავტორიზაცია) მოიწვიე სტუმარი შესვლისთვის |
არა |
HttpNotFoundResult | აბრუნებს HTTP შეცდომის კოდს 404 - არ მოიძებნა(არ მოიძებნა) |
HttpNotFound() |
HttpStatusCodeResult | აბრუნებს მითითებულ HTTP კოდს |
არა |
ცარიელი შედეგი | არაფერს აკეთებს |
არა |
ყველა ეს ტიპი მომდინარეობს ActionResult კლასიდან და ბევრ მათგანს აქვს მოსახერხებელი დამხმარე მეთოდები Controller კლასში. ამ ტიპის შედეგების გამოყენების დემონსტრირებას განვიხილავთ მომდევნო სტატიებში.