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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
×Ô¶¯Éú³É²âÊԽű¾·½°¸Ç³Îö
 
  3856  次浏览      27
 2019-4-10
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚËѺü£¬±¾ÎÄÖ÷Ҫͨ¹ý±àд½Ó¿Ú×Ô¶¯»¯²âÊԽű¾½øÐзÖÎö×Ô¶¯»¯»ñÈ¡½Ó¿ÚÐÅÏ¢£¬·ÖÎö½Ó¿Ú×Ô¶¯»¯½Å±¾½á¹¹ºÍÄÚÈÝ£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£

×÷ΪһÃû½Ó¿Ú×Ô¶¯»¯²âÊÔ¹¤³Ìʦ£¬ÈÕ³£ÃæÁÙ×î¶àµÄ¹¤×÷¾ÍÊDZàд½Ó¿Ú×Ô¶¯»¯²âÊԽű¾£¬ÄÇô£¬ÔÚ coding µÄ¹ý³ÌÖÐ×îÈÃÄã¾õµÃ¿ÝÔïºÍ·¦Î¶ÊÂÇéÓÐÄÄЩ£¿

Í´µã

1.ÿ´ÎÄõ½Ð½ӿڣ¬ÎÒÃÇÒªÊÖ¶¯²ÎÕÕÎĵµÔڽű¾ÖÐÉú³ÉÒ»·Ý½Ó¿ÚÀ࣬²ÎÊýÔ½¶à»¨·Ñʱ¼äÔ½¶à

2.ÐèÇó²»Í¬£¬µ«½¡×³ÐԺͲ¿·ÖÒµÎñÓÃÀýÖØ¸´ÐÔ¸ß

3.ÏëÖØ¹¹½Å±¾£¬½Ó¿ÚÊý¾ÝºÍÓÃÀýÕâ¿é´¿±àдµÄ¹¤×÷Á¿¾Í»áÈÃÈËÍû¶øÇÓ²½

ÿÌì¶¼Òª»¨ÉÏ30%µÄʱ¼äȥдÄÇЩ²»Ì«ÐèҪ˼¿¼µÄ½Å±¾£¬ÕâÕæ²»¹»×Ô¶¯»¯£¡

½â¾ö·½°¸

1.½âÎöÎĵµ

2.ÊáÀíÊʺÏ×Ô¶¯Éú³ÉµÄ½Å±¾

3.ͨ¹ý¹¤¾ßÉú³ÉÕⲿ·Ö½Å±¾

Ô¤ÆÚÄ¿±ê

½â·ÅË«ÊÖ£¬½µµÍ´¿ÊÖÁ¦ÀͶ¯Õ¼±È£¬½ø¶ø¸ø×Ô¼ºÌṩ¸ü¶àµÄʱ¼äȥ˼¿¼¡¢Àí½â²úÆ·ºÍÉè¼Æ¸ü¶à¡°´ÏÃ÷¡±µÄÓÃÀý

ʵ¼ùƪ ×Ô¶¯»¯»ñÈ¡½Ó¿ÚÐÅÏ¢ ·ÖÎö½Ó¿Ú×Ô¶¯»¯½Å±¾½á¹¹ºÍÄÚÈÝ

×Ô¶¯»¯²âÊԽű¾½á¹¹Í¼

ɸѡ¹¤×÷Á¿´óÓÖÓйæÂÉ¿ÉÑ­µÄ½Å±¾

´Ë´¦¹æÂɲ»ÒËÌ«¹ýÓÚ¸´ÔÓ£¬¿ÉÏÈÑ¡Âß¼­¼òµ¥µÄ²¿·Ö£¬ÎÒÃÇÖ÷ҪѡȡÒÔÏÂÁ½²¿·Ö

½Ó¿ÚÀ࣬¹¤×÷ʱ¼äÕ¼±È30%~50%£¬Ìص㣺½á¹¹Ìض¨¡¢Êý¾ÝÀ´Ô´ÓÚÆäËüƽ̨

½Ó¿ÚÀà½á¹¹Í¼

ÓÃÀý²¿·Ö£¬¹¤×÷ʱ¼äÕ¼±È30%~50%,ÌØµã£ºÖظ´¶È¸ßÓÚ80%×óÓÒ¡¢Éú³ÉÂß¼­¿ÉÃèÊö

ÓÃÀý½á¹¹Í¼

½âÎö½Ó¿ÚÎĵµ

½Ó¿ÚÐÅÏ¢À´Ô´ÓÚ½Ó¿ÚÎĵµ£¬Ä¿Ç°Êг¡ÉϱȽÏÖ÷Á÷µÄ¼¸¸ö½Ó¿ÚÎĵµ¹ÜÀí¹¤¾ßÓÐSwagger¡¢RAP¡¢WIKI »òÕ߯äËûÆÕͨÎĵµ¹¤¾ß¡£

ÏÂÃæÒÔ½âÎö½Ó¿ÚÎļþΪĿµÄ·ÖÎö±È½Ïϼ¸¿î¹¤¾ßµÄÇø±ð£º

Èç¹ûÓÐÌõ¼þ£¬´ó¼Ò¿ÉÒÔ¸ù¾Ý¿ª·¢³É±¾ºÍ½âÎö½Ó¿ÚÎļþµÄÄÑÒ׳̶ÈÀ´×ۺϿ¼ÂÇ£¬È·¶¨Ê¹ÓÃÄĸöƽ̨¹ÜÀí½Ó¿Ú

ÎÒÃÇÏîÄ¿ÊÇ Swagger ºÍ WIKI »ìºÏʹÓã¬ÓÉÓÚÈÕ³£²âÊÔ¿´ WIKI ¾Ó¶à£¬Òò´ËÔçÆÚ²ÉÓà Python ÅÀ³æÀûÆ÷ BeautifulSoup À´½âÎöWIKIhtmlÒ³Ãæ

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
title_string = soup.title.string
# ºóÃæ¼ÌÐø½âÎöÆäËûÐèÒªÓõ½µÄ½Ó¿ÚÄÚÈÝ

ʹÓÃÏÂÀ´·¢ÏÖͨ¹ýwikiÀ´»ñÈ¡½Ó¿ÚÐÅÏ¢µÄһЩ±×¶Ë

ÍêÈ«¿¿È˹¤À´Ô¼ÊøÊéд¹æÔò²»¿¿Æ×

¶ÔÓÚ¸´ÔÓµÄǶÌײÎÊý£¬ÉÔÓв»°´Õչ淶À´µÄ£¬¾Í»áµ¼Ö½ű¾½âÎö´íÎ󣬺ܴó³Ì¶ÈÉÏÔì³ÉÁ˽âÎöµÄÄѶÈ

ÔÚhtmlÉÏ׼ȷµÄ¶¨Î»ÐÅÏ¢Ô¶±ÈÔÚjsonÉÏÄѶȴ󣬼æÈÝÐÔ²î

ÓÚÊÇ£¬³¢ÊÔ½âÎöSwagger·µ»ØµÄjsonÀ´»ñµÃ½Ó¿ÚÐÅϢΪºóÃæÉú³É½Å±¾×ö×¼±¸

{
"swagger": "2.0",
"host": "xxx",
"basePath": "/",
"tags":[
{"name":"xxx-controller","deion":"xxx"},
...
],
"paths": {
"<½Ó¿ÚµØÖ·1>": { ... },
"<½Ó¿ÚµØÖ·2>": { ... },
...
},
"definitions": {
"<ʵÌåÀà1>": { ... },
"<ʵÌåÀà2>": { ... },
...
}
}

ʹÓÃÒÔÏ·½Ê½Äõ½json½á¹ûºó£¬¾Í¿ÉÒÔÖ±½Ó°´ÕÕ´¦Àí×ÖµäµÄ·½Ê½À´»ñÈ¡ÐèÒªµÄÄÚÈÝ¡£

graph LR
json-->ApiObj

¶ÔÓÚswagger.jsonµÄ½âÎöºÍ´úÂëÉú³É¹Ù·½Ò²ÌṩÁËһЩ¿É¹©Ê¹ÓõĿâswagger-codegen (java),ÓÉÓÚ±à³ÌÓïÑÔµÄÏÞÖÆ£¬ÎÒÃÇʹÓÃÁËpython×Ô¼º½âÎö

ÏÖÔÚ£¬ÎÒÃÇÒÑÄõ½Éú³É´úÂëËùÐèÒªµÄÐÅÏ¢

×Ô¶¯Éú³É´úÂë ´úÂëÉú³É¹¤¾ß

class CodeGeneratorBackend():
def begin(self, tab="t"):
self.code = []
self.tab = tab
self.level = 0
def end(self):
# return string.join(self.code, "")
return "".join(self.code)
def write(self, string):
self.code.append(self.tab * self.level + string)
def indent(self):
self.level = self.level + 1
def dedent(self):
if self.level == 0:
raise SyntaxError("internal error in code generator")
self.level = self.level - 1
"""µ÷Ó÷½·¨,¿ªÊ¼Éú³É´úÂë"""
c = CodeGeneratorBackend()
c.begin(tab=" ") # ¶¨ÒåËõ½ø·½Ê½
c.write("def function(self):n")
c.indent() # Ëõ½ø
# ·½·¨Ìå
c.dedent() # »ØÍËÉÏÒ»´ÎËõ½ø

½Ó¿ÚÀಿ·Ö½Å±¾Éú³É¹æÔò

ÓÉÓÚÎÒÃǽӿÚÊôÓÚÊÇ´æ´¢ÔÚÀà½á¹¹ÖУ¬Òò´Ë¸ù¾Ýµ±Ç°½Å±¾µÄAPI Object½Ó¿Ú½øÐбéÀúÌæ»»¼´¿É

½Ó¿ÚÓÃÀý²¿·Ö´úÂëÉú³É¹æÔò

ÌØÊâÖµÓÃÀý

¸øÃ¿¸ö²ÎÊýÉú³ÉΪ0¡¢None¡¢¿Õ×Ö·û´®ÕâÑùÌØÊâÖµµÄÓÃÀý

¶¨Î»²ÎÊýÀàÐÍ

ͨ¹ý½Ó¿Ú²ÎÊý¸ø³öµÄÀàÐÍ£¬Éú³É·ûºÏ¸ÃÀàÐ͵ÄÖµ£¬ºÍһЩ²»·ûºÏ²ÎÊýÀàÐ͵ÄÖµ(½¡×³ÐÔ)£¬¸³ÖµºóÉú³ÉÓÃÀý,ÈçÏ´úÂëʾÀý

¶¨Î»Ìض¨¹Ø¼ü´Ê²ÎÊý

Óöµ½pageÏà¹Ø²ÎÊý¿ÉÉú³É·ÖÒ³ÓÃÀý£¬¾ßÌå·ÖÒ³²âÊÔÓÃÀýϸ½Ú¾Í²»×¸Êö

Óöµ½ÀàËÆstarttime£¬endtime²ÎÊý£¬¿ÉÉú³ÉÁ½¸öʱ¼ä²ÎÊýºÍµ±Ç°Ê±¼äǰºó±È½ÏµÄÓÃÀý£¬Á½¸öʱ¼ä²ÎÊýǰºó±È½ÏµÄÓÃÀý

¸ÃÉú³É¹æÔòÐèÒªºÍ¿ª·¢Ô¼¶¨Ò»Ð©»ù±¾Ô­Ôò£¬ÁíÍâÒ²ÐèÒªÎÒÃÇÔÚÈÕ³£²âÊÔÖжà¹éÄÉ×ܽᣬÕÒ³öÄÇЩÓй̶¨¹æÂɵÄÓÃÀý£¬Ïë°ì·¨¶¨Î»Éú³ÉÕâÀàÓÃÀý

¶¨Î»½Ó¿ÚÀàÐÍ

²éѯÀà½Ó¿Ú£º¿ÉÉúµ¥²ÎÊý²éѯ¡¢×éºÏ²ÎÊý²éѯ¡¢È«²ÎÊý²éѯµÈÓÃÀý

¸üÐÂÀà½Ó¿Ú£º¿ÉÉú³Éµ¥Ìõ¸üÐÂÿ¸ö²ÎÊý£¬×éºÏ¸üУ¬È«Á¿¸üеÈÓÃÀý

×Ô¶¯Éú³É²âÊԽű¾¹¤¾ß½éÉÜ ¿ò¼ÜÁ÷³Ìͼ

¹¤¾ßÀ©Õ¹ÐÔ

ÓÃÀýÉú³É¹æÔò¿ÉÀ©Õ¹£¬´Ó¿ò¼ÜͼÖпÉÒÔ¿´µ½£¬ÓÃÀý¹æÔòÕâ¿ì×ԳɶÀÁ¢Ä£°æ£¬¿Éµ¥¶Àά»¤£¬±ãÓÚºóÐøÐ¹æÔòµÄ¼ÓÈë

´úÂëÄ£°æ¿ÉÀ©Õ¹£¬²»Í¬ÍŶӶÔÓÚ´úÂë¹æ·¶¡¢»ù´¡Ä£°æµÄÑùʽ¶¼²»Ò»Ñù£¬¿É×Ô¶¨ÒåÉú³ÉÄ£°æµÄÑùʽ£¬Ôö¼ÓÁ˹¤¾ßµÄÁé»îÐÔ

Ö§³Ö¶àÖÖÊý¾ÝÀàÐÍת»»£¬ºóÐø¿ÉÀ©Õ¹Éú³ÉAPI¶ÔÏó¡¢²ÎÊý×Öµä»òÆäËûÊý¾Ýģʽ

³É¹ûºÍºóÐøÐж¯ ЧÂÊÌáÉý

ÒÔÒ»¸öÓÅ»ÝȯÐèÇóΪÀý£¬´óÔ¼ÐÂÔö/¸üÐÂÁË10¸ö½Ó¿Ú£¨Ô¼150¸ö²ÎÊýÇëÇó²ÎÊý£¬100¸ö·µ»Ø²ÎÊý£©£¬°üº¬Ôöɾ¸Ä²é¼¸ÖÖÀàÐÍ£¬±àд¼Óµ÷ÊԽű¾ÔÚʹÓù¤¾ßǰºóËù»¨·Ñʱ¼ä¶Ô±È£¬ÈçÏ£º

´ÓÉÏÀý¿ÉÒÔ¿´³öʹÓýű¾ºóµÄЧÂÊÌá¸ßÁ˽üÒ»°ë£¬¶ø´ÓÉè¼Æµ½±àдÍêµÚÒ»°æ¹¤¾ß½ö»¨·ÑÁË2~3¸ö¹¤×÷ÈÕ£¬»¹ÊǷdz£ÖµµÃÒ»×öµÄ¡£

¾Û½¹²âÊÔ

½Å±¾±àд¹¤×÷Á¿µÄ¼õÉÙ£¬»áÔö¼Ó²úÆ·²âÊÔ˼¿¼µÄʱ¼ä£¬ÍêÉÆÓÃÀý£¬¼ì²é¸²¸ÇÃæµÈ

ͳһ¹æ·¶

ͳһÁ˽ӿÚÀàÊäд¹æ·¶£¬±ãÓÚÍŶÓÄÚ²¿Î¬»¤ºÍÀí½â½Å±¾

ͳһ»ù±¾ÓÃÀýÉú³É˼·£¬¹æ±Ü²âÊÔ¹¤³ÌʦÔÚÉè¼Æ»ù±¾ÓÃÀýÉè¼ÆÊ±ÓÐËùÒÅ©£»Í³Ò»ÓÃÀýÊä³ö¸ñʽ£¬±ãÓÚËûÈËÀí½âºÍά»¤ÓÃÀý

ÖØ¹¹ÀûÆ÷

Èç¹ûÓмƻ®×ö½Å±¾Öع¹£¬Ê¹Óù¤¾ßºó¿ÉÒԳɱ¶µÄ½ÚÊ¡±àд½Ó¿ÚÐÅÏ¢ºÍÓÃÀý²¿·Ö½Å±¾µÄʱ¼ä

ºóÐøµü´úÓÅ»¯µã

ĿǰÓÃÀýµÄÉú³É˼·´ó¶à»¹¾ÖÏÞÔÚµ¥²ÎÊýÉÏ£¬¶à²ÎÊýµÄÉú³É˼·»¹½ÏÉÙ£¬ºóÐø»áͨ¹ýÍ·ÄԷ籩µÈÐÎʽÀ´À©Õ¹¸ü¶àµÄÓÃÀýµÄÉú³É˼·

ͨ¹ýʵ¼Êµ÷Óýӿڣ¬»ñÈ¡½á¹û£¬Ìá¸ß×Ô¶¯Éú³ÉÓÃÀýÆÚÍû½á¹ûµÄ׼ȷÐÔ,¼Ì¶ø½ÚÊ¡¸ü¶à¶Ô²¿·ÖÆÚÍû½á¹û×öµ÷ÕûµÄʱ¼äͶÈë

×îºóÏë˵µÄÊÇ£¬Õâ¸öС¹¤¾ßµÄÉè¼ÆË¼Â·Ô¶±ÈʵÏÖ¸üÖØÒª£¬ÎÞÂÛʹÄÄÖÖÓïÑÔ»ò¿â¶¼¿ÉÒÔʵÏÖ½âÎöÎļþºÍ´úÂëµÄÉú³É£¬ÖØÒªµÃÊǰ´ÕÕÔõÑùµÄ˼·ȥÉú³É½Å±¾£¬ÔÚÕⲿ·ÖÉϺóÐøÎÒÃÇÒ²ÓкܶàÐèÒªÃþË÷µÄµØ·½¡£

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

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù