Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Asp.net web api Öª¶àÉÙ
 
  3651  次浏览      27
 2018-5-15 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ¼òÊ飬ÒÔÃæÊÔÎÊ´ðµÄÐÎʽ½øÐÐÕ¹¿ª£¬Ö÷Òª½éÉÜÁËREST Ô­Ôò£¬RESTºÍ SOAP¼äµÄÇø±ð£¬ASP.NET WEB API ¹¦ÄÜ£¬WCF ºÍ WEB APIÖ®¼äÈçºÎÑ¡ÔñµÈ֪ʶ¡£

Q1. ʲôÊÇREST?

Ans. RESTÊÇ Representational State Transfer£¨±íÊöÐÔ״̬´«µÝ£©µÄ¼ò³Æ¡£ÊÇÒ»ÏîÓÃÓÚ·Ö²¼Ê½»·¾³Êý¾Ý½»»»µÄЭÒé¡£

RESTÊÇÒ»Öּܹ¹·ç¸ñ£¬Ëü½«Ã¿¸ö·þÎñ¶Ô´ýΪ×ÊÔ´²¢Í¨¹ýHttpЭÒé·½·¨£¨GET¡¢POST¡¢PUT¡¢DELETE£©»ñÈ¡Êý¾Ý¡£

REST·ç¸ñµÄ¼Ü¹¹°üº¬¿Í»§¶ËºÍ·þÎñ¶Ë¡£

¿Í»§¶Ë³õʼ»¯ÇëÇóµ½·þÎñÆ÷£¬·þÎñÆ÷¸ºÔð´¦ÀíÇëÇó²¢·µ»ØÏìÓ¦¡£

ÕâЩÇëÇóºÍÏìÓ¦¶¼ÊÇÎ§ÈÆÕâЩ×ÊÔ´µÄ±íʾÐÎʽ½øÐд«µÝ¡£

Q2. ½âÊÍÏÂRESTÔ­Ôò£¿

Ans. RESTÊÇһϵÁÐÔ­Ôò£¬ÓÃÀ´¶¨Òåweb±ê×¼£¬±ÈÈçHTTP¡¢URIs ÈçºÎ±»Ê¹Óá£

Ö÷ÒªÓÐÒÔÏÂ5ÌõÖØÒªµÄRESTÔ­×°£º

AddressableResources£¨¿É·ÃÎʵÄ×ÊÔ´£© - ÿһ¸ö×ÊÔ´¶¼Ó¦¸ÃÄܱ»URI£¨Î¨Ò»±êʶ·û£©È·¶¨¡£

Simple and Uniform Interfaces£¨ÓÐÒ»Ö½ӿڣ© - RESTÊÇ»ùÓÚHTTPЭÒéµÄ£¬Ê¹ÓÃHTTP GET, POST, PUT, DELETE

À´Ö´ÐвÙ×÷¡£Ê¹µÃREST¼òµ¥Ò»Ö¡£

RepresentationOriented£¨ÃæÏò±íÊö£© - ×ÊÔ´µÄ±íÏÖÐÎʽ¿ÉÒÔ½»»»µÄ¡£GETÓÃÀ´»ñÈ¡×ÊÔ´µÄijÖÖ±íÏÖÐÎʽ£¬POSTÓÃÀ´´«µÝ×ÊÔ´µ½·þÎñÆ÷ÒÔÖÁÓڵײã×ÊÔ´Äܹ»±»¸Ä±ä¡£Representation¿ÉÒÔÓкܶàÖÖ±íÏÖÐÎʽ£¬±ÈÈçXML¡¢JsonµÈ¡£

Communicate Stateless£¨ÎÞ״̬ͨÐÅ£© - Ò»¸öÓ¦ÓóÌÐò¿ÉÒÔÓµÓÐ״̬µ«ÊÇûÓпͻ§¶Ë»á»°Êý¾Ý´æ´¢ÔÚ·þÎñÆ÷¡£ÈκλỰÀàÐ͵ÄÊý¾ÝÓ¦¸ÃÔÚ¿Í»§¶Ë±£´æºÍ´¦Àí£¬Ö»ÓÐÔÚÿ´ÎÇëÇóÖа´Ðè´«µÝµ½·þÎñÆ÷¡£

Cacheable£¨¿É»º´æ£© - ¿Í»§¶ËÓ¦¸ÃÄܹ»»º´æÏìÓ¦ÒÔ¹©ºóÐøÊ¹Óá£

Q3. RESTºÍ SOAP¼äµÄÇø±ðÊÇʲô?

Ans. Ïê¼ûÏÂ±í£º

SOAP REST

SOAP ÊÇ Simple Object Access Protocol(¼òµ¥¶ÔÏó·ÃÎÊЭÒé)µÄ¼ò³Æ REST ÊÇRepresentational State Transfer(±íÊöÐÔ״̬´«µÝ)µÄ¼ò³Æ

ËüÊÇÒ»¸ö»ùÓÚ XML µÄЭÒ飬½¨Á¢ÔÚ HTTP »ò TCP/IP£¬SMTP»ù´¡Ö®ÉÏ¡£ REST²»ÊÇÒ»¸öЭÒé¶øÊÇÒ»Öּܹ¹·ç¸ñ¡£ ±ÈÈ磺»ùÓÚ×ÊÔ´µÄ¼Ü¹¹¡£

SOAP ÌṩÁËÎÞ״̬ºÍÓÐ״̬µÄÁ½ÖÖʵÏÖ·½Ê½¡£ REST ÊÇÎÞ״̬µÄ¡£

SOAP ʹÓÃxml×÷ΪÏûÏ¢¸ñʽ REST Ö§³Öxml£¬json

SOAP ¶¨ÒåÁ˱ê×¼µÄ¹æ·¶¡£±ÈÈ磺WS-SecurityÊÇʵÏÖ°²È«µÄ¹æ·¶ 䶨Òå±ê×¼¹æ·¶

SOAP ÏûÏ¢°üº¬ÁËÒ»¸öÐŷ⣬ÀïÃæ°üº¬ÁËSOAPµÄHeader¡¢Body£¨ÓÃÀ´´æ´¢Äãʵ¼ÊÒª·¢Ë͵ÄÐÅÏ¢£© REST ʹÓÃHTTP¼¯³ÉµÄheader£¨Ö§³Ö¶àÖÖýÌåÀàÐÍ£©È¥Ð¯´øÔªÊý¾Ý£¬Ê¹ÓÃGET¡¢POST¡¢PUT¡¢DELETE ¶¯´ÊÖ´ÐÐCURD

SOAP ʹÓýӿÚÒÔ¼°ÃüÃûµÄ²Ù×÷È¥µ÷ÓÃService¡£ REST ʹÓà URI ÒÔ¼°(GET, PUT, POST, DELETE)·½·¨À´µ÷ÓÃService¡£

±ÈRESTÂý ±ÈSOAP¿ì

Q4. ʲôÊÇASP.NET WEB API£¿

Ans. ASP.NET WEB API ÊÇÒ»¸ö¿ò¼ÜÓÃÀ´´î½¨HTTP·þÎñÒÔ¹©¿Í»§¶Ë£¨±ÈÈ磺ä¯ÀÀÆ÷£¬ÊÖ»ú£¬IPhoneµÈ£©µ÷Óá£ËüÓëASP.NET MVCºÜÏàËÆÒòΪËü°üº¬mvcµÄ¹¦ÄÜ£¬±ÈÈç routing, controllers, action results, filter, model binders, IOC container or dependency injection¡£

µ«ÊÇËü²¢²»ÊÇMVC¿ò¼ÜµÄÒ»²¿·Ö¡£ËüÊÇ

ASP.NET ƽ̨µÄºËÐIJ¿·Ö¡£Äܱ»MVC»òÕ߯äËûÀàÐ͵ÄwebÓ¦ÓÃʹÓá£Í¬Ê±ËüÒ²¿ÉÒÔÓÃ×÷¶ÀÁ¢µÄweb·þÎñÓ¦ÓóÌÐò¡£

ASP.NET WEB API ¹¦ÄÜ

1.ËüÖ§³Ö»ùÓÚÔ¼¶¨µÄCRUD²Ù×÷ÒòΪËüÖ§³ÖHTTP ¶¯´Ê GET, POST, PUT , DELETE¡£

2.ÏìÓ¦°üº¬http״̬ÂëºÍAccept header¡£

3.ÏìÓ¦±»WEB APIÖеÄMediaTypeFormatter ¸ñʽ»¯ÎªJSON, XML»òÕßÈκÎÄãÏëÌí¼Ó×÷Ϊ MediaTypeFormatterµÄÈκθñʽ¡£

4.Ëü¿ÉÒÔ½ÓÊÕºÍÉú³É·ÇÃæÏò¶ÔÏóµÄÄÚÈݱÈÈçͼÏñ£¡PDFµÈ¡£

5.ËüÒѾ­×Ô¶¯Ö§³Ö OData ¡£Òò´Ë½« [Queryable]ÌØÐÔÌí¼Óµ½controllerµÄ·½·¨ÖУ¬Ëü½«»á·µ»Ø IQueryable½á¹û, ¿Í»§¶Ë¿ÉÒÔʹÓø÷½·¨½øÐÐOData×éºÏ²éѯ¡£

6.¿ÉÒÔÔÚIIS»òÓ¦ÓóÌÐòÖмÄËÞ¡£

7.ËüÖ§³Ö MVC µÄÐí¶à¹¦ÄÜ£¬±ÈÈçrouting, controllers, action results, filter, model binders, IOC container or dependency injection ¡£

Q5. ΪʲôҪѡÔñASP.NET WEB API?

Ans. Èç½ñ£¬»ùÓÚWebµÄÓ¦ÓóÌÐòÒѾ­Ô¶²»ÄÜÂú×ã¿Í»§ÐèÇó¡£ÔÚÈÕ³£Éú»îÖÐÈËÃÇʹÓÃiphone£¬ÊÖ»ú£¬Æ½°åµÈ¡£ÕâЩÉ豸ÓÐһϵÁеÄappÈí¼þÀ´Ìṩ±ãÀûµÄ·þÎñ¡£Òò´ËÎÒÃǵĹØ×¢µã²»ÔÙ½ö½öÊÇweb»¹ÓÐapp¡£

ËùÒÔ£¬Èç¹ûÄãÏëÒÔ¿ìËÙÇÒ¼òµ¥µÄ·½Ê½±©Â¶ÄãµÄ·þÎñ¶ËÊý¾Ýµ½ä¯ÀÀÆ÷¶ËºÍÏÖ´úÉ豸appÉÏ£¬ÄãÓ¦¸ÃÓÐÒ»¸öAPI£¬Ëü¸ºÔð¼æÈÝä¯ÀÀÆ÷ºÍËùÓÐÉ豸¡£

±ÈÈ磺twitter£¬facebook£¬Google Api¶¼Ö§³ÖwebÓ¦ÓóÌÐòºÍÊÖ»úapp¡£

WEB APIÊÇÒ»¸öºÜ°ôµÄ¿ò¼ÜÓÃÀ´±©Â¶ÄãµÄÊý¾ÝºÍ·þÎñµ½²»Í¬µÄÉ豸¡£¶øÇÒWEB APIÊÇÒ»¸ö¿ªÔ´µÄƽ̨»ùÓÚ.net frameworkÀ´ÌṩRest-fulµÄ·þÎñ¡£

²»ÏñWCF REST Service£¬ËüʹÓÃHTTPÍêÕûµÄ¹¦ÄÜ£¨URIs£¬request/response headers£¬caching£¬versioning£¬various content formats£©£¬Äã²»ÐèÒªÏñwcf rest serviceÄÇÑùΪ²»Í¬µÄÉ豸¶¨Òå¶îÍâµÄÅäÖÃÎļþ

Why to choose WEB API£¿

1.Èç¹ûÎÒÃÇÐèÒªweb serviceµ«²»ÐèÒª SOAP£¬ÄÇôASP.NET WEB API½«ÊÇ×î¼ÑÑ¡Ôñ¡£

2.ËüÔÚÏÖÓÐWCFÏûÏ¢¹ÜµÀÖ®ÉÏ£¬¹¹½¨¼òµ¥µÄ£¬»ùÓÚ·ÇSOAPµÄHTTP·þÎñ¡£

3.Ëü²»ÏñWCF REST serviceÄÇÑùÐèÒªÅäÖ÷¦Î¶µÄÅäÖÃÎļþ¡£

4.ʹÓã×EB API´´½¨·þÎñÊ®·Ö¼òµ¥¡£

5.»ùÓÚHTTP²¢ÇÒÈÝÒ×¶¨Ò壬ÒÔREST·½Ê½¹«¿ªºÍʹÓá£

6.ËüÊÇÇáÁ¿¼¶µÄ¼Ü¹¹£¬ÊÊÓÃÓÚÓÐÏÞ´ø¿íµÄÉ豸£¬ÈçÖÇÄÜÊÖ»ú¡£

7.¿ªÔ´¡£

Q6. WCF¡¢WEB API¡¢ WCF REST ¡¢Web ServiceÖ®¼äµÄÇø±ðÊÇ£¿

Ans. Ö÷񻂿±ðÊÇ£º

Web Service

1.»ùÓÚSOAPЭÒ飬·µ»ØxmlÊý¾Ý¸ñʽ¡£

2.½öÖ§³ÖHTTPЭÒé¡£

3.·Ç¿ªÔ´£¬Ö»Òª¿Í»§¶ËÄܽâÎöxml¾Í¿ÉÒÔʹÓá£

4.Ö»ÄÜÔÚIISÉϹÒÔØ¡£

WCF

1.»ùÓÚSOAPЭÒ飬·µ»ØxmlÊý¾Ý¸ñʽ

2.ËüÊÇweb service£¨ASMX£©µÄÑÝ»¯°æ¡£Ö§³ÖTCP, HTTP, HTTPS, Named Pipes, MSMQ¡£

3.ÐèÒª¶îÍâÅäÖôóÁ¿·±ËöµÄÅäÖÃÏî¡£

4.·Ç¿ªÔ´£¬Ö»Òª¿Í»§¶ËÄܽâÎöxml¾Í¿ÉÒÔʹÓá£

5.¿ÉÒÔÔÚÓ¦ÓóÌÐò»òIIS»òwindow serviceÉϳÐÔØ¡£

WCF Rest

1.½«WCF ×÷Ϊ WCF Rest ·þÎñʹÓã¬Äú±ØÐëÆôÓà webHttpBindings.

2.Ö§³ÖHTTP GETºÍPOST£¬·Ö±ð¶ÔӦʹÓà [WebGet] ºÍ [WebInvoke] ÌØÐÔ¡£

3.Èç¹ûÐèÒªÖ§³ÖÆäËûHTTP¶¯´Ê£¬ÄãÐèÒªÔÚ.svcÎļþÖÐÕë¶ÔÐèÒªÖ§³ÖµÄHTTP¶¯´Ê×öһЩÅäÖá£

4.ʹÓÃWebGetͨ¹ý²ÎÊý´«µÝÊý¾Ý£¬ÐèÒªÅäÖá£Í¬Ê±£¬UriTemplate ±ØÐëÖ¸¶¨¡£

5.Ö§³ÖXML, JSON ºÍ ATOM Êý¾Ý¸ñʽ¡£

WEB API

1.Ò»ÖÖеĿò¼ÜÌṩÁ˼òÒ׵ķ½Ê½ÓÃÀ´´î½¨HTTP services¡£

2.WEB APIÊÇÒ»¸ö¿ªÔ´µÄÀíÏëµÄƽ̨ÔÚ.NET FrameworkÉϴREST-ful services¡£

3.ËüʹÓÃHTTPµÄÍêÕû¹¦ÄÜ£¨Ïñ URIs, request/response headers, caching,

versioning, various content formats£©¡£

4.ËüҲͬʱ֧³ÖMVCÒ»ÑùµÄ¹¦ÄÜ£¨routing, controllers, action results, filter, model binders, IOC container or dependency injection, unit testing£©£¬Ê¹µÃËü¸ü¼òµ¥Ç¿½¡¡£

5.¿ÉÒÔÔÚÓ¦ÓóÌÐò»òIISÖгÐÔØ¡£

6.ËüÊÇÇáÁ¿¼¶µÄ¼Ü¹¹£¬Ö§³Ö¶àÖÖÉè±¸ÌØ±ðÊÇÓдø¿íÏÞÖÆµÄÉ豸±ÈÈçÖÇÄÜÊÖ»ú¡£

7.ÏìÓ¦±»WEB APIµÄMediaTypeFormatter¸ñʽ»¯Îª JSON¡¢ XML»òÕßÈκÎÄãÏëÒªÌí¼Ó×÷Ϊ MediaTypeFormatter µÄÈκθñʽ¡£

Q7. ÔÚWCF ºÍ WEB APIÖ®¼äÈçºÎÑ¡Ôñ?

Ans. ¿ÉÒÔ´ÓÒÔϼ¸µã½øÐп¼ÂÇ£º

1.ÐèÒªÖ§³ÖÌØ±ðµÄ³¡¾°£¬±ÈÈ磺one way messaging£¨µ¥ÏòͨÐÅ£©£¬message queues£¨ÏûÏ¢¶ÓÁУ©£¬duplex communication£¨È«Ë«¹¤Í¨ÐÅ£©µÈ£¬Ñ¡ÔñWCF¡£

2.µ±ÄúÏë´´½¨Ò»¸ö¿ÉÒÔʹÓÿìËÙ´«ÊäͨµÀµÄ·þÎñʱ£¬ÇëÑ¡ÔñWCF£¬ÈçTCP£¬ÃüÃû¹ÜµÀ£¬»òÕßÉõÖÁUDP£¨ÔÚWCF 4.5£©£¬²¢ÇÒµ±ËùÓÐÆäËûͨµÀ²»¿ÉÓÃʱÄܹ»Ö§³ÖHTTP´«ÊäÐŵÀ¡£

3.µ±ÄúҪͨ¹ýHTTP´´½¨ÃæÏò×ÊÔ´µÄ·þÎñʱѡÔñWEB API£¬ÒòΪÆä¿ÉÒÔʹÓÃÍêÕûµÄ HTTPµÄÌØÐÔ£¨ÈçURI£¬ÇëÇó/ÏìӦͷ£¬»º´æ£¬°æ±¾¿ØÖÆ£¬¸÷ÖÖÄÚÈݸñʽ£©¡£

4.Èç¹ûÄúÏ£Íû½«·þÎñ¹«¿ª¸ø¹ã·ºµÄ¿Í»§¶Ë£¨°üÀ¨ä¯ÀÀÆ÷£¬ ÊÖ»ú£¬iphoneºÍƽ°åµçÄÔ£©£¬Ñ¡ÔñWEB API¡£

Q8. ASP.NET MVC Óë ASP.NET WEB APIÖ®¼äµÄÇø±ðÊÇ?

Ans. Ö÷ÒªÓÐÒÔÏÂÇø±ð£º

1.ASP.NET MVC ÓÃÀ´´´½¨webÓ¦Ó÷µ»ØÊÓͼºÍÊý¾Ý£»µ«ÊÇASP.NET WEB API ÊÇÓÃÀ´´´½¨ÍêÕûµÄHTTP·þÎñ£¬½ö·µ»ØÊý¾ÝÎÞÊÓͼ·µ»Ø¡£

2.WEB API »ùÓÚ.NET Framework¹¹½¨REST-ful·þÎñ£¬²¢Ö§³ÖÄÚÈÝЭÉÌ£¨·µ»Ø¿Í»§¶ËÐèÒªµÄ¸ñʽ»¯µÄÊý¾Ý£¬±ÈÈçjson£¬xml£¬AtomµÈ£©¡£

3.WEB API»¹¸ºÔð·µ»ØÌض¨¸ñʽµÄÊý¾Ý£¬ÈçJSON£¬XML»òÈÎºÎÆäËû»ùÓÚ½ÓÊÜÇëÇóÍ·Öж¨ÒåµÄ¸ñʽ£»µ«MVCÖ»ÄÜͨ¹ýJsonResult·µ»ØJson¸ñʽÊý¾Ý¡£

4.WEB API µÄÇëÇóÓ³Éäµ½Http¶¯´Ê¶ÔÓ¦µÄaction£»MVC µÄÇëÇóÖ±½ÓÓ³Éäµ½¶ÔÓ¦µÄaction name¡£

5.ASP.NET WEB APIÊÇеĿò¼ÜºÍASP.NET¿ò¼ÜºËÐĵÄÒ»²¿·Ö¡£Ä£ÐͰ󶨣¬¹ýÂËÆ÷£¬ ·ÓÉºÍÆäËûMVC¹¦ÄÜ£¬ÔÚWEB APIÖдæÔÚÓÚSystem.Web.Http³ÌÐò¼¯£»µ«ÊÇÔÚMVCÖÐÕâЩ¹¦ÄÜ´æÔÚÓÚSystem.Web.Mvc³ÌÐò¼¯¡£Òò´ËWEB APIÒ²¿ÉÒÔ ÓëASP.NETÒ»ÆðʹÓÃÒÔ¼°×÷Ϊ¶ÀÁ¢µÄ·þÎñ²ã¡£

6.Äú¿ÉÒÔÔÚµ¥¸öÏîÄ¿ÖлìºÏʹÓÃWEB APIºÍMVC¿ØÖÆÆ÷À´´¦Àí¸ß¼¶AJAXÇëÇó²¢ÒÔJSON£¬XML»òÈÎºÎÆäËû¸ñʽ·µ»ØÊý¾Ý£¬²¢¹¹½¨ÍêÕûµÄHTTP·þÎñ¡£Í¨³££¬Õ⽫ÊÇWEB API×Ô³ÐÔØ¡£

7.µ±Äã»ìºÏʹÓÃÁËMVCºÍWEB API¿ØÖÆÆ÷£¬ÄãÏëʵÏÖÊÚȨÄÇôÄã±ØÐë´´½¨Á½¸ö¹ýÂËÆ÷Ò»¸öΪMVCºÍÁíÒ»¸öΪWEB API£¬ÒòΪÁ½ÕßÊDz»Í¬µÄ¡£

8.WEB API ÊÇÒ»¸öÇáÁ¿¼¶µÄ¿ò¼Ü£¬²»½ö½öwebÓ¦ÓóÌÐò¿ÉÒÔʹÓã¬ÆäËûÖÇÄÜÊÖ»úappÒ²¿ÉʹÓá£

Q9. WEB APIÄÜ·µ»ØViewÂð£¿

Ans. ÓëASP.NET MVC²»Í¬£¬WEB API½öÄÜ·µ»ØÊý¾Ý£¬·µ»ØµÄÊý¾Ý¸ñʽ¿ÉÒÔΪstring£¬json£¬xml£¬textµÈ¡£

Q10. ¿ÉÒÔÈçͬASP.NET MVCÄÇÑùÐÞ¸ÄWEB APIµÄaction nameÂð£¿

Ans. ¿ÉÒÔ£¬Í¨¹ýʹÓÃ[ActionName]ÌØÐÔ¼´¿ÉÐÞ¸Äaction name£º

[HttpGet]
[ActionName("GetProducts")]
public IEnumerable <Product> ProductList()
{
return db.Products.AsEnumerable();
}

Q11. ÈçºÎÏÞÖÆWEB APIµÄAciton½öÄܱ»HTTP GET£¬POST£¬PUT£¬DELETE·ÃÎÊ?

Ans. ¼òµ¥£¬ºÍASP.NET MVCÀàËÆ£¬Í¨¹ýʹÓÃ[HttpGet]¡¢[HttpPost]¡¢[HttpPut]¡¢[HttpDelete]ÌØÐÔÀ´´ïµ½ÕâһĿµÄ¡£

±ÈÈ磬Èç¹ûÄãÏëÏÞÖÆÒ»¸öAction½öÄܱ»HTTP GetÇëÇó·ÃÎÊ£¬¿ÉÒÔÔÚActionÉÏʹÓÃ[HttpGet]ÌØÐÔ¼´¿É£¬ÈçÏ£º

[HttpGet]
public IEnumerable <Product> ProductList()
{
return db.Products. AsEnumerable();
}

Q12. ÈçºÎÔÚASP.NET MVCÖе÷Óà WEB API£¿

Ans. ASP.NET WEB API ¿ÉÒÔͨ¹ýʹÓÃHttpClientÇëÇóWEB APIµØÖ·µÄ·½Ê½À´µ÷Óãº

public class ProductController : Controller
{
HttpClient Client = new HttpClient();
Uri BaseAddress = new Uri("http://localhost:131/");
public ActionResult Index ()
{
Client.BaseAddress = BaseAddress;
HttpResponseMessage response = Client. GetAsync (" productservice / GetProducts") .Result;
if (response.IsSuccessStatusCode)
{
var data = response. Content.ReadAsAsync <IEnumerable < Product > >(). Result;
return View (data);
}
return View (); } }

Q13. ASP.NET WEB API ·ÓÉÓë ASP.NET MVC ·ÓÉÓÐÊ²Ã´Çø±ð£¿

Ans. ASP.NET MVC Óë ASP.NET WEB API ʹÓ÷ÓÉÀ´¼à¿Ø´«ÈëµÄÇëÇó¡£Ö÷ÒªµÄÇø±ðÓÐÒÔϼ¸µã£º

1.ÔÚWEB API ·ÓÉģʽÖÐ {action}²ÎÊýÊÇ¿ÉÑ¡µÄ£¬µ«ÊÇÄã¿ÉÒÔ×ÔÐаüº¬ Ò»¸ö {action} ²ÎÊý¡£ÔÚASP.NET MVCÖÐ {action} ²ÎÊýÊÇÇ¿ÖÆµÄ¡£

2.Web Api ¿ØÖÆÆ÷ÖÐaction ҪôʹÓÃHTTP action ¶¯´Ê ( GET, POST, PUT, DELETE ) ÌØÐÔ±ê¼Ç»òÕßÒÔHTTP¶¯´Ê×÷Ϊaction·½·¨ÃûÃüÃûǰ׺¡£

ASP.NET MVCÖÐaction·½·¨Ä¬ÈÏ¿ÉÒÔͨ¹ý HTTP GET¡¢POST ¶¯´Êµ÷Óá£Èç¹ûÐèÒªÖ§³ÖÆäËûHTTP¶¯´Ê£¬Í¬ÑùÐèҪΪÆä¶¨ÒåÌØÐÔ¡£

3.²»ÏñASP.NET MVC£¬Web API½öÄܽÓÊÕÒ»¸ö¸´ÔÓÀàÐÍ×÷Ϊ²ÎÊý¡£

Q14. ASP.NET WEB API2ÖÐÈçºÎÆôÓÃÌØÐÔ·ÓÉ£¿

Ans. ¼òµ¥£¬½ö½öÐèÒªÔÚWebApiConfig.csÀàµÄRegister()·½·¨Ìí¼Ó¶ÔMapHttpAttributeRoutes()·½·¨µÄµ÷Óü´¿É¡£

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
//enabling attribute routing config.MapHttpAttributeRoutes(); }
}

ͬʱÄãÒ²¿ÉÒԺϲ¢Ê¹ÓÃÌØÐÔ·ÓɺͻùÓÚÔ¼¶¨µÄ·ÓÉ¡£

public static class WebApiConfig
{
public static void Register (HttpConfiguration config)
{
//enabling attribute routing
config.MapHttpAttributeRoutes ();
// Convention-based routing.
config.Routes.MapHttpRoute (
name: "DefaultApi",
routeTemplate: "api/ {controller}/{id}",
defaults: new { id = RouteParameter.Optional } );
} }

Q15. ÈçºÎÔÚASP.NET WEB API2Öж¨ÒåÌØÐÔ·ÓÉ?

Ans. ÏñASP.NET MVC5ÄÇÑù£¬¿ÉÒÔÔÚWEB API2µÄcontroller¼¶±ðºÍaction¼¶±ð¶¨ÒåÌØÐÔ·ÓÉ£º

Controller level routing£¨¿ØÖÆÆ÷¼¶±ð·ÓÉ£©

ÔÚ¿ØÖÆÆ÷¼¶±ð¶¨ÒåµÄÌØÐÔ·Óɽ«Ó¦Óõ½ËùÓÐaction£¬³ý·ÇactionÉÏÖ¸¶¨ÁËÌØ¶¨µÄ·ÓÉ¡£

[RoutePrefix ("Service/User")]
public class UserController : ApiController
{
//GET route : api/User
public IEnumerable <string> Get()
{
return new string [] { "value1", "value2" };
}
[Route("{id}")] // GET route: Service/User/1
public string Get (int id) { return "value";
}
[Route("")] // POST route: Service/User/
public void Post ([FromBody]string value)
{
}
}

Action level routing£¨Action¼¶±ð·ÓÉ£©

¸øControllerϵÄÌØ¶¨ActionÖ¸¶¨Â·ÓÉ¡£

public class UserController : ApiController
{
//GET route: api/User
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
[Route("Service/User/{id}")] // GET route: Service /User /1
public string Get (int id)
{
return "value";
}
[Route("Service/User/")] //POST route: Service / User /
public void Post ([FromBody]string value)
{
}
}

Q16.WebapiÈçºÎÉèÖÃÒ»¸öActionͬʱ֧³ÖgetºÍpostÇëÇó£¿

Ans. ʹÓÃAcceptVerbsÌØÐÔ£¬ÈçÏ´úÂëËùʾ£º

[AcceptVerbs ("GET", "POST")]
public HttpResponseMessage Http ([ FromUri ]ProxyHttpParam getParam, ProxyHttpParam postParam)
{ var res = new HttpResponseMessage (HttpStatusCode .OK );
return res;
}

ÇëÇóΪGET£¬ÔògetParamÓÐÖµ£»

ÇëÇóΪPOST£¬ÔòpostParamÓÐÖµ¡£

   
3651 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì