±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ¼òÊ飬ÒÔÃæÊÔÎÊ´ðµÄÐÎʽ½øÐÐÕ¹¿ª£¬Ö÷Òª½éÉÜÁË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ÓÐÖµ¡£
|