±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcnblogs£¬±¾ÎÄÖ÷Òª½²ÊöÖ÷Á÷µÄ¼¸ÖÖ,
²¢¶Ôweb serverµÄ»ù´¡¼Ü¹¹×ö¸ö¼òµ¥µÄÃèÊö¡£
|
|
ǰÑÔ:
ÔÚÒÆ¶¯»¥ÁªÍøµÄ´ó³±ÖÐ, Web Restful APIÖð½¥³ÉΪWeb
ServerÖØÒªµÄÒ»¸ö·ÖÖ§. ÒÆ¶¯¶ËºÍ·þÎñ¶ËµÄ½»»¥, Ö÷Á÷µÄ·½Ê½»¹ÊÇͨ¹ýHttpÐÒéµÄÐÎʽÀ´½øÐÐ.
ÇëÇóÒÔGet/Post·½Ê½, ÏìÓ¦ÒÔjson(Êý¾Ý¸üСÇÉÇÒ×ÔÃèÊöÄÜÁ¦Ç¿)µÄ·½Ê½Õ¼¾ÝÖ÷Á÷. ¸÷´ó»¥ÁªÍø¹«Ë¾,
¶Ô×ÔÉíµÄWeb ApiÉè¼ÆÓи÷×Եıê×¼. ±¾ÎÄÖ÷Òª½²ÊöÖ÷Á÷µÄ¼¸ÖÖ, ²¢¶Ôweb serverµÄ»ù´¡¼Ü¹¹×ö¸ö¼òµ¥µÄÃèÊö.
°Ù¶ÈÔÆÊµÏÖ·½°¸:
°Ù¶ÈÒÆ¶¯ÔÆÊÂÒµ²¿µÄ¶ÔÔÆ·þÎñµÄWeb Api½è¼øÁËÑÇÂíÑ·µÄAWSʵÏÖ·½°¸.
¾ßÌå¿É²Î¼û°Ù¶ÈÒÆ¶¯ÔÆ¿ª·¢ÕßÍøÕ¾: http://developer.baidu.com/.
¸ÃRestful APIµÄÉè¼ÆÌØµã, Ö÷ÒªÓÉÒÔϼ¸·½ÃæÀ´ÃèÊö.
1). URLµÄÉè¼Æ
http[s]: //{server}
/rest /2.0 /{product} / { resource } ? {query_
string } |
server: ¾ßÌå·þÎñµÄÓòÃû
product: ¾ßÌå·þÎñµÄ²úÆ·Ãû³Æ
resource: ¾ßÌå·þÎñµÄij¸ö×ÊÔ´Ãû³Æ
query_string: ¾ßÌå·þÎñµÄij¸ö·½·¨ËùÓÐkey/value¶Ô²ÎÊý(°üÀ¨º¯ÊýÃû)
2). ÇëÇó/ÏìÓ¦Êý¾Ý¸ñʽ
»ùÓÚHTTPÐÒé, Ö§³ÖGET/POSTÁ½ÖÖ·½Ê½, Ò»°ã¶ÁÇëÇó²ÉÓÃGETģʽ,
¶øÐ´ÇëÇó²ÉÓÃPOSTµÄģʽ.
ÇëÇóÊý¾Ý¸ñʽ: ÓëÆÕͨµÄweb·þÎñ²¢ÎÞÇø±ð, GETģʽ²ÎÊý¸éÖÃÔÚquery_stringÖÐ,
POSTģʽ²ÎÊý¸éÖÃÔÚPOST¸½´ø²ÎÊýÖÐ
ÏìÓ¦Êý¾Ý¸ñʽ: ÏìÓ¦µÄ½á¹ûºÍÒµÎñ·þÎñÏà¹Ø
#) ÒµÎñ²Ù×÷³É¹¦
{
¡¡¡¡"request_ id" :12394838223,
¡¡¡¡"response_ params" : { ... }
} |
ÆÀ×¢: request_idÊDZ¾´ÎÇëÇóµÄ±êʶºÅ, ÓÃÓÚÎÊÌâ²éÕÒ, response_paramsÔò°üº¬Á˾ßÌåÒµÎñµÄÏìÓ¦½á¹û.
#) ÒµÎñ²Ù×÷ʧ°Ü
{
¡¡¡¡"request_ id" :12394838223,
¡¡¡¡"error_ code" :30000,
¡¡¡¡"error_ msg" :"Request params
not valid"
} |
ÆÀ×¢: ʧ°Ü·µ»ØµÄ½á¹û¹Ì¶¨°üº¬Èý²¿·Ö: request_id /error_code
/error_ msg, error_ code Ö¸¶¨´íÎóÂë, error_msgΪ¾ßÌåµÄ³ö´íÐÅÏ¢.
3). ÒµÎñÂ߼״̬ÓëhttpÏìÓ¦ÂëµÄ°ó¶¨
ÒµÎñ½á¹ûÓëhttpÏìÓ¦ÂëµÄ°ó¶¨, ²»¹ÜÊÇ·ñºÏÀí, ÕâÒ²ËãÊÇAWS
Web APIµÄÒ»´óÌØÉ«.
±ÈÈç:

ÆÀ×¢: ÒµÎñ·þÎñ²ãÓ¦¸ÃÔÚhttpÐÒéÖ®ÉÏ, Á½ÕßµÄ״̬²»¸Ã°ó¶¨, ÖÁÓÚAWSΪºÎÕâÑùÉè¼Æ,
ÎÒÖ»ÄÜ˵"´æÔÚ¼´ºÏÀí"
¸Ã·½°¸ÊµÕ½ºÍµãÆÀ:
ÊÀÉÏûÓÐÒ»¸ö·½°¸ÊÇÍêÃÀµÄ, Ëü×ÜÓÐËüµÄ²»×ã´æÔÚ. Õâ±ß̸̸С±àÔÚ¹¤³Ìʵ¼ùÖÐ,
¶Ô´Ë·½°¸Ëù¸Ð¿®µÄһЩ²»×ã.
ÔÚij¸ö¾ßÌåµÄÔÆ·þÎñÓ¦ÓÃÖÐ, ÌØ¶¨µÄÒ»¸ö·½·¨·ÃÎʳÉΪÁËÈȵã(ÆäËû·½·¨·ÃÎÊÁ¿ÉÙ).
ÎÒÃÇÏëÔÚ·´Ïò´úÀí²ã(lighttpd/nginx)×÷·ÖÁ÷, ÈÃʵÏÖFastCGIµÄCÄ£¿é´úÌæÔÉúµÄPHP
CGI. Web ServerÊÇÒÀ¾ÝURIÖеķþÎñÓòÃûºÍURI PATHÀ´Æ¥Åä»®·Ö/·ÖÁ÷, È»¶øÒź¶µÄÊÇmethod·½·¨²ÎÊýÔÚURIµÄquery_stringÖÐ,
¸Ã·½°¸ÎÞ·¨ÊµÊ©. Èç¹ûmethod²ÎÊýÔÚURIÖеÄPATHÖÐÄǾͺðìÁË.
¾¡¹ÜHTTPÐÒéÊôÓÚÍøÂçµÄÓ¦Óòã, µ«ÊÇÔÙϸ·ÖµÄ»°, ÒµÎñ²ã¸ÃÔÚHTTPÐÒéÖ®ÉÏ,
²»Í¬µÄÐÒé²ã, ±Ë´ËÖ®¼äÓ¦¸Ã»¥²»Ó°Ïì. ÒµÎñ´íÎóÂëºÍhttp״̬ÂëµÄ°ó¶¨¶àÉÙÈÃÈËÓÐЩÀ§»ó. ÓÐЩ·¢ÉúÔÚWeb
Server²ãµÄÕæÕý404´íÎó, È´±»Web APIµÄClient SDKÎóÈÏΪÁËÒµÎñÂß¼´íÎó, ÕâЩÆäʵ²»Ó¦¸Ã·¢Éú.
¸öÈ˱ȽÏÍÆ³çµÄ×ö·¨:
1). HttpµÄÇëÇó·ÖΪURLÔ¼¶¨¹æÔò¡¢ÇëÇó²ÎÊý¹æÔò
URL¹æÔò:
http: //{server}
/{product} /{version} /{logic} / {method} ? {query
_ string } |
server: Ϊ¾ßÌåµÄ·þÎñÓòÃû
product: ΪӦÓù¤³ÌÃû
version: Ϊ¾ßÌå°æ±¾ºÅ, ±ãÓÚ½«À´µÄ¹¦ÄÜÀ©Õ¹, ¿ÉÒÔÔݶ¨Îª
1.0, 2.0
logic: Ϊ¾ßÌåÒµÎñÂß¼µÄ³õ²½»®·Ö, ±ÈÈçºó¶Ë¹ÜÀí·½·¨, app¶ËµÄÇëÇó·½·¨
method: ¾ßÌåÒµÎñµÄ·½·¨
¾ßÌåµÄÇëÇó²ÎÊý, ÓÉÖ¸¶¨µÄmethod·½·¨¾ö¶¨, È«¶¼×÷ΪHTTP
GET/POSTµÄ²ÎÊýÁбí.
2). HttpµÄÏìÓ¦¹æÔò
HTTPÏìÓ¦ÂëΪ200, Âß¼½á¹ûÒÔJSON×Ö·û´®µÄÐÎʽ×éÖ¯:
Èç¹ûÏìÓ¦½á¹ûÕýÈ·,Ôò·µ»Ø½á¹ûÈçÏÂËùʾ:
{
¡¡¡¡"success": true,
¡¡¡¡"result_ value" : {
¡¡¡¡¡¡¡¡/ * ÓɾßÌåµÄÒµÎñ·½·¨¾ö¶¨ */
¡¡¡¡}
} |
Èç¹ûÏìÓ¦½á¹ûʧ°Ü,Ôò·µ»ØÈçϽá¹û:
{
¡¡¡¡"success" : false,
¡¡¡¡"request_ id": 10001,
¡¡¡¡"err_ code": 1001,
¡¡¡¡"err_ msg": "Internal Server
Error"
} |
½è¼øÁËAWSµÄÉè¼ÆË¼Â·, ͬʱÅׯúÁËÒµÎñ´íÎóÂëÓëHTTP״̬ÂëµÄ°ó¶¨,
ͬʱ°Ñmethod/logic/version¸éÖÃÔÚURIÖеÄPATHÖÐ, ±ãÓÚWebServerµÄ·ÖÁ÷.
Web ServerµÄ»ù´¡¼Ü¹¹
¶ÔÓÚWeb ServerµÄ»ù´¡¼Ü¹¹, ´óÖÂÓÐÒÔϼ¸ÖÖÁ÷Ðеķ½Ê½.
1). ²ÉÓÃLVSµÄ·½Ê½:
¶ÔÄÚ²¿¶à¸ö½Úµã(IPµØÖ·)µÄ·ÃÎÊ, ¶ÔÍâ³éÏóΪͬһ¸öIPµØÖ·, Õâ¾ÍÊÇLVSµÄ·½Ê½.
Æä¿ÉÒÔÀí½âΪÈí¼þ¼¶¸ºÔؾùºâ·½Ê½(ÐèÒªÒÀÀµÓ²¼þ)
2). ²ÉÓÃNginx/ApacheµÄ·´Ïò´úÀí:
¡¡¡¡
ÆÀ×¢:NginxµÄ·´Ïò´úÀí,¿ÉÒÔ·½±ã¶Ô¾²Ì¬×ÊÔ´ºÍ¶¯Ì¬×ÊÔ´×ö·ÖÀë,
¶ÔСÆóÒµ¶øÑÔ, ÊÇ×î³£ÓõÄÒ»ÖÖ·½Ê½.
3). LVSºÍNginx/Apache·´Ïò´úÀíµÄ½áºÏ
¡¡¡¡
|