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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ͨ¹ýdemoѧϰOpenStack¿ª·¢--API·þÎñ(4)
 
×÷Õß:Áõ³Âãü À´Ô´;InfoQ ·¢²¼ÓÚ 2016-7-14
  2306  次浏览      28
 

±àÕß°´£º¡¶Í¨¹ýdemoѧϰOpenStack¿ª·¢¡·×¨À¸ÊÇÁõ³ÂãüµÄϵÁÐÎÄÕ£¬×¨À¸Í¨¹ý¿ª·¢Ò»¸ödemoµÄÐÎʽÀ´½éÉÜһЩ²ÎÓëOpenStackÏîÄ¿¿ª·¢µÄ±ØÒªµÄ»ù´¡ÖªÊ¶£¬Ï£Íû°ïÖú´ó¼ÒÈëÃÅÆóÒµ¼¶PythonÏîÄ¿µÄ¿ª·¢ºÍOpenStackÏîÄ¿µÄ¿ª·¢¡£Áõ³ÂãüÖ÷Òª¹Ø×¢OpenStackµÄÉí·ÝÈÏÖ¤ºÍ¼Æ·ÑÁìÓò¡£ÁíÍ⣬»¹¶ÔÔÆ¼ÆËã¡¢·Ö²¼Ê½ÏµÍ³Ó¦ÓúͿª·¢¸ÐÐËȤ¡£

ÉÏһƪÎÄÕÂ˵µ½£¬ÎÒÃǽ«ÒÔʵÀýµÄÐÎʽÀ´¼ÌÐø½²ÊöÕâ¸öAPI·þÎñµÄ¿ª·¢ÖªÊ¶£¬ÕâÀï»áʹÓÃPecanºÍWSMEÁ½¸ö¿â¡£

Éè¼ÆREST API

Òª¿ª·¢REST API·þÎñ£¬ÎÒÃÇÊ×ÏÈÐèÒªÉè¼ÆÒ»ÏÂÕâ¸ö·þÎñ¡£Éè¼Æ°üÀ¨ÒªÊµÏֵŦÄÜ£¬ÒÔ¼°½Ó¿ÚµÄ¾ßÌ广·¶¡£ÎÒÃÇÕâÀïҪʵÏÖµÄÊÇÒ»¸ö¼òµ¥µÄÓû§¹ÜÀí½Ó¿Ú£¬°üÀ¨Ôöɾ¸Ä²éµÈ¹¦ÄÜ¡£Èç¹û¶ÁÕß¶ÔREST API²»ÊìϤ£¬¿ÉÒÔÏÈ´ÓWikiÒ³ÃæÁ˽âһϡ£

ÁíÍ⣬ΪÁË·½±ã´ó¼ÒÔĶÁºÍÀí½â£¬±¾ÏµÁеĴúÂë»á·ÅÔÚgithubÉÏ£¬diabloneo/webdemo¡£

Version of REST API

ÔÚOpenStackµÄÏîÄ¿ÖУ¬¶¼ÊÇÔÚURLÖбíÃ÷Õâ¸öAPIµÄ°æ±¾ºÅµÄ£¬±ÈÈçKeystoneµÄAPI»áÓÐ/v2.0ºÍ/v3µÄǰ׺£¬±íÃ÷Á½¸ö²»Í¬°æ±¾µÄAPI£»MagnumÏîĿĿǰµÄAPIÔòΪv1°æ±¾¡£ÒòΪÎÒÃǵÄwebdemoÏîÄ¿²Å¸Õ¸Õ¿ªÊ¼£¬ËùÒÔÎÒÃÇÒ²°ÑÎÒÃǵÄAPI°æ±¾ÉèÖÃΪv1£¬ÏÂÎÄ»á˵Ã÷ÔõôʵÏÖÕâ¸översionºÅµÄÉèÖá£

REST API of Users

ÎÒÃǽ«ÒªÉè¼ÆÒ»¸ö¹ÜÀíÓû§µÄAPI£¬Õâ¸öºÍKeystoneµÄÓû§¹ÜÀíµÄAPI²î²»¶à£¬ÕâÀïÏÈÁгöÿ¸öAPIµÄÐÎʽ£¬ÒÔ¼°¼òÒªµÄÄÚÈÝ˵Ã÷¡£ÕâÀïÎÒÃÇ»á°ÑÉÏÃæÌáµ½µÄversionºÅÒ²¼ÓÈëµ½URL pathÖУ¬ÈöÁÕßÄܸüÈÝÒ×ÁªÏµÆðÀ´¡£

ÕâЩ¾ÍÊÇÎÒÃÇҪʵÏÖµÄÓû§¹ÜÀíµÄAPIÁË¡£ÆäÖУ¬±íʾʹÓÃÒ»¸öUUID×Ö·û´®£¬Õâ¸öÊÇOpenStackÖÐ×î¾­³£±»ÓÃÀ´×÷Ϊ¸÷ÖÖ×ÊÔ´IDµÄÐÎʽ£¬ÈçÏÂËùʾ£º

ÒòΪÊǸödemo£¬ËùÒÔÎÒÃÇÉèÖÃÒ»¸öÓû§°üº¬µÄÐÅÏ¢»á±È½Ï¼òµ¥£¬Ö»°üº¬nameºÍage¡£

ʹÓÃPecan´î½¨API·þÎñµÄ¿ò¼Ü

½ÓÏÂÀ´¾ÍÒª¿ªÊ¼±àÂ빤×÷ÁË¡£Ê×ÏÈÒª°ÑÕû¸ö·þÎñµÄ¿ò¼Ü´î½¨ÆðÀ´¡£ÎÒÃÇ»áÔÚÈí¼þ°ü¹ÜÀíÕâÆªÎļþÖеĴúÂë»ù´¡ÉϼÌÐøÎÒÃǵÄdemo£¨ËùÓÐÕâЩ´úÂëÔÚgithubµÄ²Ö¿âÀï¶¼ÄÜ¿´µ½£©¡£

´úÂëĿ¼½á¹¹

Ò»°ãÀ´Ëµ£¬OpenStackÏîÄ¿ÖУ¬Ê¹ÓÃPecanÀ´¿ª·¢API·þÎñʱ£¬¶¼»áÔÚ´úÂëĿ¼ÏÂÓÐÒ»¸öרÃŵÄAPIĿ¼£¬ÓÃÀ´±£´æAPIÏà¹ØµÄ´úÂë¡£±ÈÈçMagnumÏîÄ¿µÄmagnum/api£¬»òÕßCeilometerÏîÄ¿µÄceilometer/apiµÈ¡£ÎÒÃǵĴúÂëÒ²×ñÊØÕâ¸ö¹æ·¶£¬ÈÃÎÒÃÇÖ±½ÓÀ´¿´ÏÂÎÒÃǵĴúÂëĿ¼½á¹¹£¨#ºóÃæµÄ±íʾעÊÍ£©£º

Õâ¸öÔÚAPI·þÎñ(3)ÕâÆªÎÄÕÂÖÐÒѾ­ËµÃ÷¹ýÁË¡£

ÏÈÈÃÎÒÃǵķþÎñÅÜÆðÀ´

ΪÁ˺óÃæ¸üºÃµÄ¿ª·¢£¬ÎÒÃÇÐèÒªÏÈÈÃÎÒÃǵķþÎñÔÚ±¾µØÅÜÆðÀ´£¬ÕâÑù¿ÉÒÔ·½±ã×Ô¼º×ö²âÊÔ£¬¿´µ½´úÂëµÄЧ¹û¡£²»¹ýÒª×öµ½Õâµã£¬»¹ÊÇÓÐЩ¸´Ôӵġ£

±ØÒªµÄ´úÂë

Ê×ÏÈ£¬ÏÈ´´½¨config.pyÎļþµÄÄÚÈÝ£º

¾ÍÊǰüº¬ÁËPecanµÄ×î»ù±¾ÅäÖã¬ÆäÖÐÖ¸¶¨ÁËroot controllerµÄλÖá£È»ºó¿´ÏÂapp.pyÎļþµÄÄÚÈÝ£¬Ö÷Òª¾ÍÊǶÁÈ¡config.pyÖеÄÅäÖã¬È»ºó´´½¨Ò»¸öWSGI application£º

È»ºó£¬ÎÒÃÇÖÁÉÙ»¹ÐèҪʵÏÖÒ»ÏÂroot controller£¬Ò²¾ÍÊÇwebdemo/api/controllers/root.pyÕâ¸öÎļþÖеÄRootControllerÀࣺ

±¾µØ²âÊÔ·þÎñÆ÷

ΪÁ˼ÌÐø¿ª·ÅµÄ·½±ã£¬ÎÒÃÇÒªÏÈ´´½¨Ò»¸öPython½Å±¾£¬¿ÉÒÔÆô¶¯Ò»¸öµ¥½ø³ÌµÄAPI·þÎñ¡£Õâ¸ö½Å±¾»á·ÅÔÚwebdemo/cmd/Ŀ¼Ï£¬Ãû³ÆÊÇapi.py£¨ÕâĿ¼ºÍ½Å±¾Ãû³ÆÒ²ÊǹßÀý£©£¬À´¿´¿´ÎÒÃǵÄapi.py°É£º

ÔËÐвâÊÔ·þÎñÆ÷µÄ»·¾³

ÒªÔËÐÐÕâ¸ö²âÊÔ·þÎñÆ÷£¬Ê×ÏÈÐèÒª°²×°±ØÒªµÄ°ü£¬²¢ÇÒÉèÖÃÕýÈ·µÄ·¾¶¡£ÔÚºóÃæµÄÎÄÕÂÖУ¬ÎÒÃǽ«»áÖªµÀ£¬Õâ¸ö¿ÉÒÔͨ¹ýtoxÕâ¸ö¹¤¾ßÀ´ÊµÏÖ¡£ÏÖÔÚ£¬ÎÒÃÇÏÈ×ö¸ö¼òµ¥°æ±¾µÄ£¬¾ÍÊÇÊÖ¶¯´´½¨Õâ¸öÔËÐл·¾³¡£

Ê×ÏÈ£¬ÍêÉÆÒ»ÏÂrequirements.txtÕâ¸öÎļþ£¬°üº¬ÎÒÃÇÐèÒªµÄ°ü£º

È»ºó£¬ÎÒÃÇÊÖ¶¯´´½¨Ò»¸övirtualenv»·¾³£¬²¢ÇÒ°²×°requirements.txtÖÐÒªÇóµÄ°ü£º

Æô¶¯ÎÒÃǵķþÎñ

Æô¶¯·þÎñÐèÒª¼¼ÇÉ£¬ÒòΪÎÒÃǵÄwebdemo»¹Ã»Óа²×°µ½ÏµÍ³µÄPython·¾¶ÖУ¬Ò²²»ÔÚÉÏÃæ´´½¨virtualenv»·¾³ÖУ¬ËùÒÔÎÒÃÇÐèҪͨ¹ýÖ¸¶¨PYTHONPATHÕâ¸ö»·¾³±äÁ¿À´ÎªPython³ÌÐòÔö¼Ó¿âµÄ²éÕÒ·¾¶£º

ÏÖÔÚ²âÊÔ·þÎñÆ÷ÒѾ­ÆðÀ´ÁË£¬¿ÉÒÔͨ¹ýä¯ÀÀÆ÷·ÃÎÊhttp://localhost:8080/ Õâ¸öµØÖ·À´²é¿´½á¹û¡££¨Äã¿ÉÄܻᷢÏÖ£¬·µ»ØµÄÊÇXML¸ñʽµÄ½á¹û£¬¶øÎÒÃÇÏëÒªµÄÊÇJSON¸ñʽµÄ¡£Õâ¸öÊÇWSMEµÄÎÊÌ⣬ÎÒÃǺóÃæÔÙÀ´´¦Àí£©¡£

µ½ÕâÀÎÒÃǵÄREST API·þÎñµÄ¿ò¼ÜÒѾ­´î½¨Íê³É£¬²¢ÇÒ²âÊÔ·þÎñÆ÷Ò²ÅÜÆðÀ´ÁË¡£

Óû§¹ÜÀíAPIµÄʵÏÖ

ÏÖÔÚÎÒÃÇÀ´ÊµÏÖÎÒÃÇÔÚµÚÒ»ÕÂÉè¼ÆµÄAPI¡£ÕâÀïÏÈ˵Ã÷һϣºÎÒÃÇ»áÖ±½ÓʹÓÃPecanµÄRestControllerÀ´ÊµÏÖREST API£¬ÕâÑù¿ÉÒÔ²»ÓÃΪÿ¸ö½Ó¿ÚÖ¸¶¨½ÓÊܵÄmethod¡£

ÈÃAPI·µ»ØJSON¸ñʽµÄÊý¾Ý

ÏÖÔÚ£¬ËùÓеÄOpenStackÏîÄ¿µÄREST APIµÄ·µ»Ø¸ñʽ¶¼ÊÇʹÓÃJSON±ê×¼£¬ËùÒÔÎÒÃÇÒ²ÒªÕâô×ö¡£ÄÇôÓÐʲô°ì·¨Äܹ»ÈÃWSME¿ò¼Ü·µ»ØJSONÊý¾ÝÄØ£¿¿ÉÒÔͨ¹ýÉèÖÃwsmeext.pecan.wsexpose()µÄrest_content_types²ÎÊýÀ´ÊÇÏÈ¡£ÕâÀÎÒÃÇ½è¼øÒ»¶ÎMagnumÏîÄ¿ÖеĴúÂ룬°ÑÕâ¶Î´úÂë´æ·ÅÔÚÎļþwebdemo/api/expose.pyÖУº

ÕâÑùÎÒÃǾͷâ×°ÁË×Ô¼ºµÄexpose×°ÊÎÆ÷£¬Ã¿´Î¶¼»áÉèÖÃÏìÓ¦µÄcontent-typeΪJSON¡£ÉÏÃæµÄroot controller´úÂëÒ²¾Í¿ÉÒÔÐÞ¸ÄΪ£º

ÔÙ´ÎÔËÐÐÎÒÃǵIJâÊÔ·þÎñÆ÷£¬¾Í¿ÉÒÔ·µÏÖ·µ»ØÖµÎªJSON¸ñʽÁË¡£

ʵÏÖ GET /v1

Õâ¸öÆäʵ¾ÍÊÇʵÏÖv1Õâ¸ö°æ±¾µÄAPIµÄ·¾¶Ç°×º¡£ÔÚPecanµÄ°ïÖúÏ£¬ÎÒÃǺÜÈÝÒ×ʵÏÖÕâ¸ö£¬Ö»Òª°´ÕÕÈçÏÂÁ½²½×ö¼´¿É£º

ÏÈʵÏÖv1Õâ¸öcontroller °Ñv1 controller¼ÓÈëµ½root controllerÖÐ

°´ÕÕOpenStackÏîÄ¿µÄ¹æ·¶£¬ÎÒÃÇ»áÏȽ¨Á¢Ò»¸öwebdemo/api/controllers/v1/Ŀ¼£¬È»ºó½«v1 controller·ÅÔÚÕâ¸öĿ¼ÏµÄÒ»¸öÎļþÖУ¬¼ÙÉèÎÒÃǾͷÅÔÚv1/controller.pyÎļþÖУ¬Ð§¹ûÈçÏÂ:

È»ºó°ÑÕâ¸öcontroller¼ÓÈëµ½root controllerÖУº

´Ëʱ£¬Äã·ÃÎÊhttp://localhost:8080/v1¾Í¿ÉÒÔ¿´µ½½á¹ûÁË¡£

ʵÏÖ GET /v1/users

Ìí¼Óusers controller

Õâ¸öAPI¾ÍÊÇ·µ»ØËùÓеÄÓû§ÐÅÏ¢£¬¹¦Äܼܺòµ¥¡£Ê×ÏÈÒªÌí¼Óusers controllerµ½ÉÏÃæµÄv1 controllerÖС£ÎªÁ˲»Ó°ÏìÔĶÁÌåÑ飬ÕâÀï¾Í²»Ìù´úÂëÁË£¬Çë¿´githubÉϵÄʾÀý´úÂë¡£

ʹÓÃWSMEÀ´¹æ·¶APIµÄÏìÓ¦Öµ

ÉÏÆªÎÄÕÂÖУ¬ÎÒÃÇÒѾ­Ìáµ½ÁËWSME¿ÉÒÔÓÃÀ´¹æ·¶APIµÄÇëÇóºÍÏìÓ¦µÄÖµ£¬ÕâÀïÎÒÃǾÍÒªÓÃÉÏËü¡£Ê×ÏÈ£¬ÎÒÃÇÒª²Î¿¼OpenStackµÄ¹ßÀýÀ´Éè¼ÆÕâ¸öAPIµÄ·µ»ØÖµ£º

ÆäÖÐusersÊÇÒ»¸öÁÐ±í£¬ÁбíÖеÄÿ¸öÔªËØ¶¼ÊÇÒ»¸öuser¡£ÄÇô£¬ÎÒÃÇÒªÈçºÎʹÓÃWSMEÀ´¹æ·¶ÎÒÃǵÄÏìӦֵĨ£¿´ð°¸¾ÍÊÇʹÓÃWSMEµÄ×Ô¶¨ÒåÀàÐÍ¡£ÎÒÃÇ¿ÉÒÔÀûÓÃWSMEµÄÀàÐ͹¦Äܶ¨Òå³öÒ»¸öuserÀàÐÍ£¬È»ºóÔÙ¶¨ÒåÒ»¸öuserµÄÁбíÀàÐÍ¡£×îºó£¬ÎÒÃǾͿÉÒÔʹÓÃÉÏÃæµÄexpose·½·¨À´¹æ¶¨Õâ¸öAPI·µ»ØµÄÊÇÒ»¸öuserµÄÁбíÀàÐÍ¡£

¶¨ÒåuserÀàÐͺÍuserÁбíÀàÐÍ

ÕâÀïÎÒÃÇÐèÒªÓõ½WSMEµÄComplex typesµÄ¹¦ÄÜ£¬ÇëÏÈ¿´Ò»ÏÂÎĵµTypes¡£¼òµ¥Ëµ£¬¾ÍÊÇÎÒÃÇ¿ÉÒÔ°ÑWSMEµÄ»ù±¾ÀàÐÍ×éºÏ³ÉÒ»¸ö¸´ÔÓµÄÀàÐÍ¡£ÎÒÃǵÄÀàÐÍÐèÒª¼Ì³Ð×Ôwsme.types.BaseÕâ¸öÀà¡£ÒòΪÎÒÃÇÔÚ±¾ÎÄÖ»»áʵÏÖÒ»¸öuserÏà¹ØµÄAPI£¬ËùÒÔÕâÀïÎÒÃǰÑËùÓеĴúÂë¶¼·ÅÔÚwebdemo/api/controllers/v1/users.pyÎļþÖС£À´¿´ÏºÍuserÀàÐͶ¨ÒåÏà¹ØµÄ²¿·Ö£º

ÕâÀïÎÒÃǶ¨ÒåÁËclass User£¬±íʾһ¸öÓû§ÐÅÏ¢£¬°üº¬Á½¸ö×ֶΣ¬nameÊÇÒ»¸öÎı¾£¬ageÊÇÒ»¸öÕûÐÍ¡£class Users±íʾһ×éÓû§ÐÅÏ¢£¬°üº¬Ò»¸ö×Ö¶Îusers£¬ÊÇÒ»¸öÁÐ±í£¬ÁбíµÄÔªËØÊÇÉÏÃæ¶¨ÒåµÄclass User¡£Íê³ÉÕâЩ¶¨Òåºó£¬ÎÒÃǾÍʹÓÃWSMEÀ´¼ì²éÎÒÃǵÄAPIÊÇ·ñ·µ»ØÁ˺ϸñµÄÖµ£»ÁíÒ»·½Ã棬ֻҪÎÒÃǵÄAPI·µ»ØÁËÕâЩÀàÐÍ£¬ÄÇô¾ÍÄÜͨ¹ýWSMEµÄ¼ì²é¡£ÎÒÃÇÏÈÀ´Íê³ÉÀûÓÃWSMEÀ´¼ì²éAPI·µ»ØÖµµÄ´úÂ룺

ÕâÑù¾ÍÍê³ÉÁËAPIµÄ·µ»ØÖµ¼ì²éÁË¡£

ʵÏÖAPIÂß¼­

ÎÒÃÇÏÖÔÚÀ´Íê³ÉAPIµÄÂß¼­²¿·Ö¡£²»¹ýΪÁË·½±ã´ó¼ÒÀí½â£¬ÎÒÃÇÖ±½Ó·µ»ØÒ»¸öдºÃµÄÊý¾Ý£¬¾ÍÊÇÉÏÃæÌù³öÀ´µÄÄǸö¡£

´úÂëÖУ¬»áÏȸù¾ÝuserÐÅÏ¢Éú³ÉUserʵÀýµÄÁбíusers_list£¬È»ºóÔÙÉú³ÉUsersʵÀý¡£´Ëʱ£¬ÖØÆô²âÊÔ·þÎñÆ÷ºó£¬Äã¾Í¿ÉÒÔ´Óä¯ÀÀÆ÷·ÃÎÊhttp://localhost:8080/v1/users£¬¾ÍÄÜ¿´µ½½á¹ûÁË¡£

ʵÏÖ POST /v1/users

Õâ¸öAPI»á½ÓÊÕÓû§ÉÏ´«µÄÒ»¸öJSON¸ñʽµÄÊý¾Ý£¬È»ºó´òÓ¡³öÀ´£¨Êµ¼ÊÖÐÒ»°ãÊÇ´æµ½Êý¾Ý¿âÖ®ÀàµÄ£©£¬ÒªÇóÓû§ÉÏ´«µÄÊý¾Ý·ûºÏUserÀàÐ͵Ĺ淶£¬²¢ÇÒ·µ»ØµÄ״̬ÂëΪ201¡£´úÂëÈçÏ£º

¿ÉÒÔʹÓÃcurl³ÌÐòÀ´²âÊÔ£º

ͬʱ£¬·þÎñÆ÷ÉÏÒ²»á´òÓ¡³ö£º

ÎÒÃÇÓÃ3ÐдúÂë¾ÍʵÏÖÁËÕâ¸öPOSTµÄÂß¼­¡£ÏÖÔÚÀ´ËµÃ÷Ò»ÏÂÕâÀïµÄÃØÃÜ¡£expose×°ÊÎÆ÷µÄµÚÒ»¸ö²ÎÊý±íʾÕâ¸ö·½·¨Ã»Óзµ»ØÖµ£»µÚÈý¸ö²ÎÊý±íʾÕâ¸öAPIµÄÏìӦ״̬ÂëÊÇ201£¬Èç¹û²»¼ÓÕâ¸ö²ÎÊý£¬ÔÚûÓзµ»ØÖµµÄÇé¿öÏ£¬Ä¬Èϻ᷵»Ø204¡£µÚ¶þ¸ö²ÎÊýҪ˵Ã÷һϣ¬ÕâÀïÓõÄÊÇbody=User£¬ÄãÒ²¿ÉÒÔÖ±½ÓдUser¡£Ê¹ÓÃbody=UserÕâÖÖÐÎʽ£¬Äã¿ÉÒÔÖ±½Ó·¢ËÍ·ûºÏUser¹æ·¶µÄJSON×Ö·û´®£»Èç¹ûÊÇÓÃexpose(None, User, status_code=201)ÄÇôÄãÐèÒª·¢ËÍÏÂÃæÕâÑùµÄÊý¾Ý£º

Äã¿ÉÒÔ×Ô¼º²âÊÔÒ»ÏÂÇø±ð¡£Òª¸ü¶àµÄÁ˽Ȿ½ÚÌáµ½µÄexpose²ÎÊý£¬Çë²Î¿¼WSMÎĵµFunctions¡£

×îºó£¬Äã½ÓÊÕµ½Ò»¸ö´´½¨Óû§ÇëÇóʱ£¬Ò»°ã»áΪÕâ¸öÓû§·ÖÅäÒ»¸öid¡£±¾ÎÄÇ°ÃæÒѾ­Ìáµ½ÁËOpenStackÏîÄ¿ÖÐÒ»°ãʹÓÃUUID¡£Äã¿ÉÒÔÐÞ¸ÄÒ»ÏÂÉÏÃæµÄÂß¼­£¬ÎªÃ¿¸öÓû§·ÖÅäÒ»¸öUUID¡£

ʵÏÖ GET /v1/users/

ҪʵÏÖÕâ¸öAPI£¬ÐèÒªÁ½¸ö²½Ö裺

ÔÚUsersControllerÖнâÎö³öµÄ²¿·Ö£¬È»ºó°ÑÇëÇ󴫵ݸøÕâ¸öÒ»¸öеÄUserController¡£´ÓÃüÃû¿ÉÒÔ¿´³ö£¬UsersControllerÊÇÕë¶Ô¶à¸öÓû§µÄ£¬UserControllerÊÇÕë¶ÔÒ»¸öÓû§µÄ¡£ ÔÚUserControllerÖÐʵÏÖget()·½·¨¡£

ʹÓÃ_lookup()·½·¨

PecanµÄ_lookup()·½·¨ÊÇcontrollerÖеÄÒ»¸öÌØÊâ·½·¨£¬Pecan»áÔÚÌØ¶¨µÄʱºòµ÷ÓÃÕâ¸ö·½·¨À´ÊµÏÖ¸üÁé»îµÄURL·ÓÉ¡£Pecan»¹Ö§³ÖÓû§ÊµÏÖ_default()ºÍ_route()·½·¨¡£ÕâЩ·½·¨µÄ¾ßÌå˵Ã÷£¬ÇëÔĶÁPecanµÄÎĵµ£ºrouting¡£

ÎÒÃÇÕâÀïÖ»Óõ½_lookup()·½·¨£¬Õâ¸ö·½·¨»áÔÚcontrollerÖÐûÓÐÆäËû·½·¨¿ÉÒÔÖ´ÐÐÇÒûÓÐ_default()·½·¨µÄʱºòÖ´ÐС£±ÈÈçÉÏÃæµÄUsersControllerÖУ¬Ã»Óж¨Òå/v1/users/ÈçºÎ´¦Àí£¬ËüÖ»ÄÜ·µ»Ø404£»Èç¹ûÄ㶨ÒåÁË_lookup()·½·¨£¬ÄÇôËü¾Í»áµ÷Óø÷½·¨¡£

_lookup()·½·¨ÐèÒª·µ»ØÒ»¸öÔª×飬Ԫ×éµÄµÚÒ»¸öÔªËØÊÇÏÂÒ»¸öcontrollerµÄʵÀý£¬µÚ¶þ¸öÔªËØÊÇURL pathÖÐÊ£ÓàµÄ²¿·Ö¡£

ÔÚÕâÀÎÒÃǾÍÐèÒªÔÚ_lookup()·½·¨ÖнâÎö³öUUIDµÄ²¿·Ö²¢´«µÝ¸øÐµÄcontroller×÷ΪеIJÎÊý£¬²¢ÇÒ·µ»ØÊ£ÓàµÄURL path¡£À´¿´Ï´úÂ룺

_lookup()·½·¨µÄÐÎʽΪ_lookup(self, user_id, *remainder)£¬Òâ˼¾ÍÊÇ»á°Ñ/v1/users/ÖеIJ¿·Ö×÷Ϊuser_idÕâ¸ö²ÎÊý£¬Ê£ÓàµÄ°´ÕÕ¡±/¡±·Ö¸îΪһ¸öÊý×é²ÎÊý£¨ÕâÀïremainderΪ¿Õ£©¡£È»ºó£¬_lookup()·½·¨Àï»á³õʼ»¯Ò»¸öUserControllerʵÀý£¬Ê¹ÓÃuser_id×÷Ϊ³õʼ»¯²ÎÊý¡£Õâô×öÖ®ºó£¬Õâ¸ö³õʼ»¯µÄ¿ØÖÆÆ÷¾ÍÄÜÖªµÀÊÇÒª²éÕÒÄĸöÓû§ÁË¡£È»ºóÕâ¸ö¿ØÖÆÆ÷»á±»·µ»Ø£¬×÷ΪÏÂÒ»¸ö¿ØÖƱ»µ÷Óá£ÇëÇóµÄ´¦ÀíÁ÷³Ì¾ÍÕâÃ´×ªÒÆµ½UserControllerÖÐÁË¡£

ʵÏÖAPIÂß¼­

ʵÏÖǰ£¬ÎÒÃÇÒªÏÈÐÞ¸ÄÒ»ÏÂÎÒÃÇ·µ»ØµÄÊý¾Ý£¬ÀïÃæÐèÒªÔö¼ÓÒ»¸öid×ֶΡ£¶ÔÓ¦µÄUser¶¨ÒåÈçÏ£º

ÏÖÔÚ£¬ÍêÕûµÄUserController´úÂëÈçÏ£º

ʹÓÃcurlÀ´¼ì²éÒ»ÏÂЧ¹û£º

¶¨ÒåWSMEÀàÐ͵ļ¼ÇÉ

Äã¿ÉÄÜ»áÓÐÒÉÎÊ£ºÕâÀïÎÒÃÇÐÞ¸ÄÁËUserÀàÐÍ£¬Ôö¼ÓÁËÒ»¸öid×ֶΣ¬ÄÇÃ´Ç°ÃæÊµÏÖµÄPOST /v1/users»á²»»áÊ§Ð§ÄØ£¿Äã¿ÉÒÔ×Ô¼º²âÊÔһϡ££¨´ð°¸ÊDz»»á£¬ÒòΪÕâ¸öÀàÐÍÀïµÄ×ֶζ¼ÊÇ¿ÉÑ¡µÄ£©¡£ÕâÀï˳±ã½²Á½¸ö¼¼ÇÉ¡£

ÈçºÎÉèÖÃÒ»¸ö×Ö¶ÎÎªÇ¿ÖÆ×Ö¶Î

ÏñÏÂÃæÕâÑù×ö¾Í¿ÉÒÔÁË£¨Äã¿ÉÒÔ²âÊÔһϣ¬¸Ä³ÉÕâÑùºó£¬²»´«µÝidµÄPOST /v1/users»áʧ°Ü£©£º

ÈçºÎ¼ì²éÒ»¸ö¿ÉÑ¡×ֶεÄÖµÊÇ·ñ´æÔÚ

¼ì²éÕâ¸öÖµÊÇ·ñΪNoneÊǿ϶¨²»Ðеģ¬ÐèÒª¼ì²éÕâ¸öÖµÊÇ·ñΪwsme.Unset¡£

ʵÏÖ PUT /v1/users/

Õâ¸öºÍÉÏÒ»¸öAPIÒ»Ñù£¬²»¹ý_lookup()·½·¨ÒѾ­ÊµÏÖ¹ýÁË£¬Ö±½ÓÌí¼Ó·½·¨µ½UserControllerÖм´¿É£º

ͨ¹ýcurlÀ´²âÊÔ£º

ʵÏÖ DELETE /v1/users/

ͬÉÏ£¬Ã»ÓÐʲôеÄÄÚÈÝ£º

×ܽá

µ½´ËΪֹ£¬ÎÒÃÇÒѾ­Íê³ÉÁËÎÒÃǵÄAPI·þÎñÁË£¬ËäȻûÓÐʵ¼ÊµÄÂß¼­£¬µ«ÊDZ¾ÎĴÆðÀ´µÄ¿ò¼ÜÒ²ÊÇOpenStackÖÐAPI·þÎñµÄÒ»¸ö³£Óÿò¼Ü£¬ºÜ¶à´óÏîÄ¿µÄAPI·þÎñ´úÂë¶¼ºÍÎÒÃǵÄwebdemo³¤µÃ²î²»¶à¡£×îºóÔÙ˵һÏ£¬±¾ÎĵĴúÂëÔÚgithubÉÏÍйÜ×Å£ºdiabloneo/webdemo¡£

ÏÖÔÚÎÒÃÇÒѾ­Á˽âÁ˰ü¹ÜÀíºÍAPI·þÎñÁË£¬ÄÇô½ÓÏÂÀ´¾ÍÒª¿ªÊ¼Êý¾Ý¿âÏà¹ØµÄ²Ù×÷ÁË¡£´ó²¿·ÖOpenStackµÄÏîÄ¿¶¼ÊÇʹÓ÷dz£ÖøÃûµÄsqlalchemy¿âÀ´ÊµÏÖÊý¾Ý¿â²Ù×÷µÄ£¬±¾ÏµÁнÓÏÂÀ´µÄÎÄÕ¾ÍÊÇÒªÀ´ËµÃ÷Êý¾Ý¿âµÄÏà¹ØÖªÊ¶ºÍÓ¦Óá£

   
2306 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ