ASP.NET MVC瀛︿範绯诲垪(浜)
ASP.NET MVC瀛︿範绯诲垪(浜)-WebAPI璇锋眰
銆銆缁х画鎺ョ潃涓婃枃ASP.NET MVC瀛︿範绯诲垪(涓)-WebAPI鍒濇帰鏉ョ湅鐪嬪逛簬涓鑸鍓嶅彴椤甸潰鍙戣捣鐨刧et鍜宲ost璇锋眰锛屾垜浠鍦╓eb API涓瑕佸備綍鏉ュ勭悊銆
杩欓噷鎴戜娇鐢↗query 鏉ュ彂璧峰紓姝ヨ锋眰瀹炵幇鏁版嵁璋冪敤銆
銆銆缁х画浣跨敤涓婁竴鏂囩珷涓鐨勭ず渚嬶紝娣诲姞涓涓猧ndex.html椤甸潰锛屾坊鍔犲筳query鐨勫紩鐢ㄣ
涓銆佹棤鍙傛暟Get璇锋眰
銆銆涓鑸鐨刧et璇锋眰鎴戜滑鍙浠ヤ娇鐢╦query鎻愪緵鐨$.get() 鎴栬$.ajax({type:"get"}) 鏉ュ疄鐜帮細
銆銆璇锋眰鐨勫悗鍙癆ction鏂规硶浠嶄负涓婄瘒鏂囩珷涓鐨凣etUser() :
銆銆涔熷彲浠ョ敤$.ajax({type:"get"}) 鏂瑰紡锛屾g‘鐨勮幏寰椾簡杩斿洖鏁版嵁锛
浜屻佷紶閫掍竴涓鍙傛暟鐨凣et璇锋眰
銆銆閫氬父鎴戜滑闇瑕佷紶閫掑弬鏁板彧闇瑕佹寚瀹歛jax鏂规硶鐨刣ata灞炴у嵆鍙锛 data:{"name":"璧靛ぇ瀹"}
銆銆鍚庡彴姝g‘鐨勮繑鍥炴暟鎹锛
涓夈佷紶閫掍袱涓鎴栧氫釜鍙傛暟鐨凣et璇锋眰
銆銆鎸夌収涓婇潰鐨勬柟娉曪紝瀵逛簬澶氫釜鍙傛暟鎴戜滑鍙浠ュ緢瀹规槗灏卞啓鍑烘潵锛 data:{"name":"璧靛ぇ瀹","age":12}
銆銆鍚庡彴姝g‘鐨勮繑鍥炴暟鎹锛
鍥涖佹棤鍙傛暟鐨凱ost璇锋眰
銆銆鎴戜滑鍙浠ヤ娇鐢$.post() 鎴$.ajax({type:"post"}) 鏉ュ彂璧穚ost璇锋眰锛
銆銆鍚庡彴姝g‘鐨勮繑鍥炰簡鏁版嵁锛
浜斻佷紶閫掍竴涓鍙傛暟鐨凱ost璇锋眰锛
銆銆棣栧厛杩欓噷闇瑕佹彁閱掑ぇ瀹朵竴涓嬶紝鎴戜滑鍦ㄤ慨鏀瑰畬鍚庡彴浠g爜鍚庯紝濡傛灉娌℃湁閲嶆柊鐢熸垚椤圭洰锛岄偅涔堝湪璇锋眰鏃跺氨浼氭姤閿欙細“鏈鎵惧埌涓庤锋眰***鍖归厤鐨凥TTP璧勬簮” 锛
銆銆鎵浠ワ紝鎴戜滑鍙瑕佹垜浠淇鏀逛簡鍚庡彴浠g爜锛屽氨涓瀹氳侀噸鏂扮敓鎴愪竴涓嬶細
銆銆涓嶈繃锛屽綋鎴戜滑閲嶆柊鐢熸垚椤圭洰锛屽啀娆″彂閫佽锋眰锛岀湅鍒扮殑浠嶇劧鏄404閿欒锛屽啀娆℃鏌ヤ竴鐣浠g爜锛屼篃娌℃湁鍙戠幇鏄鍝閲岀殑闂棰樸
銆銆浜嬪疄涓婏紝ASP.NET Web API鑳藉熸g‘鐨勮瘑鍒鎴戜滑鐨刄serController鎺у埗鍣ㄥ勭悊Post /api/user 锛屼絾鍗翠笉鑳芥壘鍒颁竴涓鍙浠ユ帴鍙楃殑鏂规硶鏉ュ勭悊璇锋眰銆
涔熷氨鏄璇达紝Web API鎺ユ敹鍒扮殑璇锋眰鑳藉熸壘鍒癠ser鎺у埗鍣锛屼絾鍦ㄨユ帶鍒跺櫒涓鎵句笉鍒板悕绉颁负Def 鐨勮繖涓狝ction銆
閭f垜浠瑕佹庝箞鏉ヨВ鍐冲憿锛
閫氳繃鎼滅储MSDN涓奧eb API瀹樼綉涓鐨勮存槑锛屾垜浠鍙浠ユ壘鍒颁笅闈㈢殑涓娈典粙缁嶏細
鍗鍦ˋction 鏂规硶涓鎴戜滑闇瑕佷娇鐢 [FromBody] 灞炴ф爣绛炬潵鏍囨槑灞炴銆
銆銆淇鏀瑰悗锛屽啀娆″彂閫佽锋眰锛屾垜浠鍙浠ョ湅鍒帮紝Status Code 涓200锛岃锋眰鍙戦佹垚鍔熴
銆銆鍙浠ョ湅鍒帮紝鍦╬ost璇锋眰涓锛屾柟娉曠殑鍙傛暟蹇呴』瑕佺敤 [FromBody] 灞炴ф潵淇楗版墠鍙浠ワ紝 [FromBody] 灏卞憡璇塛eb API 瑕佷粠post璇锋眰浣撻噸鍘昏幏鍙栧弬鏁扮殑鍊笺
浣嗚╂垜浠璇у紓鐨勫嵈鏄锛屽悗鍙拌繑鍥炵殑鏁版嵁涓璶ame鐨勫间负绌恒
銆銆閫氳繃璋冭瘯锛屾垜浠鍙浠ョ湅鍒帮紝鍚庡彴Action 涓鎺ユ敹鍒扮殑name鍊间负null銆
銆銆閫氳繃涓婇潰鐨勬祴璇曟垜灏变篃鑳藉熺寽娴嬪埌锛學eb API 瑕佹眰璇锋眰浼犻掔殑 [FromBody] 鍙傛暟锛岃偗瀹氭槸鏈変竴涓鐗瑰畾鐨勬牸寮忥紝鎵嶈兘琚姝g‘鐨勮幏鍙栧埌銆傝岃繖绉嶇壒瀹氱殑鏍煎紡骞朵笉鏄鎴戜滑甯歌佺殑 key=value 鐨勯敭鍊煎瑰舰寮忋俉eb API 鐨勬ā鍨嬬粦瀹氬櫒甯屾湜鎵惧埌 [FromBody] 閲屾病鏈夐敭鍚嶇殑鍊硷紝涔熷氨鏄璇达紝 涓嶆槸 key=value 锛岃屾槸 =value 銆
鐜板湪锛屽挶浠鎶奷ata涓鐨刱ey璁剧疆涓虹┖锛岀劧鍚庡啀娆″彂閫佽锋眰锛
銆銆娴嬭瘯鍙瑙侊紝鍚庡彴姝g‘鐨勬帴鏀跺埌浜嗘暟鎹:
鍏銆佷紶閫掍袱涓鍙傛暟鐨凱ost璇锋眰
銆銆鎸夌悊璇达紝涓涓鍙傛暟鐨勮锋眰瀹炵幇浜嗭紝閭d箞浼犻掍袱涓鎴栬呭氫釜鍙傛暟涔熷氨寰堥『鍒╀簡锛屽逛簬涓や釜鍙傛暟鐨勫悗鍙版帴鏀舵柟娉曪紝鎴戜滑鍙鑳戒細杩欐牱鏉ュ啓:
浣嗕簨瀹炶瘉鏄庯紝杩欐牱鏄閿欒鐨勩
閭e埌搴曚袱涓鎴栬呭氫釜鍙傛暟鎴戜滑瑕佹庢牱鏉ュ畾涔夊憿锛
鍐嶆℃煡鐪嬪畼缃戜腑鐨勪粙缁嶏紝鎴戜滑浜嗚В鍒帮細
銆銆涔熷氨鏄璇达紝[FromBody] 淇楗扮殑鍙傛暟鍙鑳芥湁涓涓銆傛垜浠闇瑕佸逛紶閫掔殑澶氫釜鍙傛暟杩涜屽皝瑁呮墠琛屻
杩欓噷锛屾垜浠鍙浠ュ皢 Name鍜 Age 灏佽呮垚涓涓猄tudent 绫伙細
銆銆鍓嶅彴椤甸潰鍐嶆″彂閫佽锋眰锛
銆銆Status Code涓200锛岃锋眰鎴愬姛锛屽苟姝g‘鑾峰彇鍒板悗鍙拌繑鍥炵殑鏁版嵁锛
銆銆杩欓噷锛屾垜浠閫氳繃涓婇潰鍥剧墖涓鐨勮锋眰澶存暟鎹鍙浠ョ湅鍒帮紝Form Data 鐨勬牸寮忔槸 key=value&key=value 杩欑嶈〃鍗曟暟鎹鏍煎紡Name=%E8%B5%B5%E5%A4%A7%E5%AE%9D&Age=13 锛屾垜浠骞虫椂浣跨敤鐨勬瘮杈冨氱殑涓鑸涓簀son鏍煎紡銆 杩欓噷锛屾垜浠浣跨敤JSON.stringify() 鏉ュ簭鍒楀寲鏁版嵁銆
鍐嶆″彂閫佽锋眰锛
銆銆鍙浠ョ湅鍒帮紝From Data 涓鏁版嵁鐨勬牸寮忎负json瀛楃︿覆锛孲tatus Code涓200锛岃锋眰姝g‘锛屼絾缁撴灉鍙堝嚭閿欎簡锛屽悗鍙板張娌℃湁鎺ユ敹鍒版暟鎹鍙傛暟锛
閭d箞闂棰樺埌搴曞嚭鍦ㄥ摢鍛锛
銆銆鎴戜滑鍐嶆℃煡鐪嬩笂鍥句腑璇锋眰澶村唴瀹癸紝娉ㄦ剰鍒帮紝铏界劧鎴戜滑浼犻掔殑鏁版嵁鏍煎紡鏄痡son瀛楃︿覆锛屼絾璇锋眰澶翠腑鐨凜ontent-type 鍗翠负
application/x-www-form-urlencoded 锛屽苟涓嶆槸json鏍煎紡瀵逛簬鐨 application/json 銆 鑰岀紪鐮佹牸寮application/x-www-form-urlencoded 琛ㄧず鐨勬槸锛氱獥浣撴暟鎹琚缂栫爜涓哄悕绉/鍊煎广
銆銆杩欓噷锛屼篃灏辨槸鎴戞兂瑕佽寸殑涓涓娉ㄦ剰鐐广骞虫椂鎴戜滑鍦ㄤ娇鐢╦son鏁版嵁鐨勬椂鍊欙紝寰堝规槗灏卞繕璁颁簡 瑕佹寚瀹 Content-type 涓 "application/json" 锛屾墍浠ュ氨瀹规槗瀵艰嚧寰堝“鎯充笉鍒”鐨勯敊璇銆
鎵浠ワ紝鎴戜滑鍦 $.ajax() 涓鎸囧畾 Content-type :
銆銆杩欐★紝鍚庡彴姝g‘鐨勬帴鏀跺苟杩斿洖浜嗘暟鎹锛
涓冦佷紶閫掑氫釜鍙傛暟鐨凱ost璇锋眰
銆銆鏈変簡涓婇潰鐨勭粡楠岋紝浼犻掑氫釜鍙傛暟鐨刾ost璇锋眰鎴戜滑灏卞緢瀹规槗鑳藉啓鍑烘潵浜嗭細
鍚庡彴鎺ユ敹骞惰繑鍥炴暟鎹锛
鍏銆佷紶閫掑氫釜涓嶅悓瀵硅薄鐨凱ost璇锋眰
銆銆鏈夋椂鍊欐垜浠杩樹細閬囧埌闇瑕佷紶閫掑氫釜涓嶅悓瀵硅薄鍙傛暟鐨勬儏鍐碉紝瀵逛簬杩欑嶇壒娈婄殑鎯呭喌鍦 Json.Net 涓涓烘垜浠鎻愪緵浜嗕竴涓 鍚嶄负 JObject 鐨勯氱敤瀵硅薄瀹瑰櫒锛屾垜浠鍙浠ラ氳繃 .瀵硅薄鍚 鐨勬柟寮忔潵鍔ㄦ佺殑閬嶅巻鍙傛暟閲岄潰鐨勫睘鎬х殑鍊硷紝鐒跺悗鍔ㄦ佺殑杞鎹㈠拰json绫诲瀷涓瀵瑰簲鐨勫睘鎬х被鍨嬨
姣斿傦細
鍚庡彴璋冭瘯锛岄氳繃dynamic 鍔ㄦ佽浆鎹㈣幏鍙栧睘鎬х殑鍊硷細
鍚庡彴姝g‘鐨勮繑鍥炰簡鏁版嵁锛
涔濄佽幏鍙栦笉鍚岀被鍨嬬殑鏁版嵁
銆銆涓鑸鎴戜滑鑾峰彇鍒板悗鍙拌繑鍥炵殑鏁版嵁鏍煎紡绫诲瀷涓 json鏍煎紡锛屾垜浠涔熷彲浠ユ寚瀹 璇锋眰澶翠腑鐨勮緭鍑虹被鍨嬫潵鑾峰緱涓嶅悓鐨勮繑鍥炵被鍨嬫暟鎹锛
鎸囧畾杈撳嚭绫诲瀷涓簒ml鏍煎紡锛
鎸囧畾杈撳嚭绫诲瀷涓 json鏍煎紡锛
銆銆鍩烘湰鍒拌繖閲岋紝杩欑瘒鏂囩珷鐨勪富瑕佸唴瀹逛篃灏辩畻璇村畬浜嗭紝鍏朵腑鐨勯噸鐐硅繕鏄 Post璇锋眰涓瀵逛簬鍙傛暟鐨勫勭悊鏄闇瑕侀噸鐐规敞鎰忕殑銆
銆銆涓婇潰鎴戜滑鍦ㄦ祴璇曠殑杩囩▼涓锛岄兘鏄閫氳繃鑷宸卞垱寤虹殑Controller鎺у埗鍣ㄧ被鏉ュ瑰弬鏁拌繘琛屾帴鏀跺勭悊锛屽彲鑳芥湁浜轰細闂锛屾垜浠杩欎箞鍐欏埌搴曟槸鍚︾﹀悎瑙勮寖鍛锛學eb API涓榛樿ゆ槸鎬庝箞鏉ュ勭悊鐨勫憿锛 杩欓噷锛孷isual Studio 涓涔熶负鎴戜滑鑷甯︿簡 Web API鎺у埗鍣ㄧ被锛
鎴戜滑鍙浠ユ坊鍔犳柊寤洪」閫夋嫨 Web API鎺у埗鍣ㄧ被 鍗冲彲锛
銆銆杩欓噷鎴戜滑鍙浠ョ湅鍒帮紝榛樿ゅ垱寤虹殑Controller鎺у埗鍣ㄧ被涓锛屽逛簬Post璇锋眰鐨凙ction鏂规硶閮借嚜甯︿簡 [FromBody] 灞炴с 鐜板湪涓嶇敤鎴戣达紝浣犱篃宸茬粡鐭ラ亾涓轰粈涔 瀹冧細涓哄弬鏁伴粯璁ゅ甫涓涓 [FromBody]灞炴у惂锛
濂戒簡锛屼粖澶╃殑鍐呭瑰氨鍒拌繖閲岋紝涓嬮潰闄勪笂鎴戝弬鑰冪殑鍑犵瘒鏂囩珷锛
MSDN涓鍏充簬Web API 涓 [FromBody] 鐨勪粙缁嶏細Parameter Binding in ASP.NET Web API | The ASP.NET Site
鍏充簬[FromBody]灞炴х殑浠嬬粛鍙奝ost鍙傛暟璇存槑锛圗鏂囷級锛Using jQuery to POST [FromBody] parameters to Web API | Encosia
涓婇潰缃戦〉鏂囩珷鐨勭炕璇戠増鏈锛銆愮炕璇戙戜娇鐢↗Query POST琛ㄥ崟鍒癢eb API | 鍖楅樻紓
Post 澶氫釜鍙傛暟鍒癢eb API鐨勬荤粨锛POST澶氫釜鍙傛暟鍒癢eb API鎺у埗鍣ㄦ柟娉曟荤粨 | 鍖楅樻紓
闄勫綋鍓嶉」鐩鐨勪唬鐮侊細XWebAPIDemo-WebAPI璇锋眰
杞杞借锋敞鏄庡嚭澶勩
posted @