Web services

Web services

Суралцах зүйлс

  • XML
  • JSON
  • API

eXtensible Markup Language - XML

XML

XML нь HTML-тэй маш төстэй боловч XML нь HTML-ээс илүү бүтэцтэй. Энд XML баримт бичгийн жишээ байна:

                        
                            < person>
                                < name>Chuck< /name>
                                < phone type="intl">
                                +1 734 303 4456
                                < /phone>
                                < email hide="yes" />
                            < /person>
                        
                    

XML-ээс зарим өгөгдлийн элементүүдийг гаргаж авдаг энгийн програм:

                        
                    import xml.etree.ElementTree as ET
                    data = '''
                    < person>
                        < name>Chuck< /name>
                        < phone type="intl">
                            +1 734 303 4456
                        < /phone>
                        < email hide="yes" />
                    < /person>'''
                    tree = ET.fromstring(data)
                    print('Name:', tree.find('name').text)
                    print('Attr:', tree.find('email').get('hide'))
                        
                    

Гурвалсан зураасан хашилт ('''), гурвалсан давхар хашилт (""") нь олон мөрийг хамарсан мөр үүсгэх боломжийг олгодог.

Үр дүн:

                        
                                Name: Chuck
                                Attr: yes
                        
                    

Ихэнхдээ XML нь олон node-той байдаг бөгөөд бид бүх node-г барьж авахын тулд loop бичих хэрэгтэй болдог:

                        
                            import xml.etree.ElementTree as ET
                        input = '''
                        < stuff>
                            < users>
                                < user x="2">
                                    < id>001< /id>
                                    < name>Chuck< /name>
                                < /user>
                                < user x="7">
                                    < id>009< /id>
                                    < name>Brent< /name>
                                < /user>
                            < /users>
                        < /stuff>'''
                        stuff = ET.fromstring(input)
                        lst = stuff.findall('users/user')
                        print('User count:', len(lst))
                        for item in lst:
                        print('Name', item.find('name').text)
                        print('Id', item.find('id').text)
                        print('Attribute', item.get('x'))
                        
                    

JavaScript Object Notation - JSON

JSON

JSON-ийн формат нь Python-ы list болон dictionary хослолтой бараг ижил байна. Өмнө дурдсан энгийн XML-тэй ойролцоо JSON ĸодчилол энд байна:

                        
                            {
                                "name" : "Chuck",
                                "phone" : {
                                "type" : "intl",
                                "number" : "+1 734 303 4456"
                                },
                                "email" : {
                                "hide" : "yes"
                                }
                            }
                        
                    

Дараах програмд бид JSON-г задлан шинжилж, өгөгдлийг уншихын тулд суурилагдсан json санг ашиглана. Үүнийг дээрх XML өгөгдөл болон ĸодтой харьцуулж үзээрэй. JSON нь дэлгэрэнгүй мэдээлэл багатай тул бид жагсаалт авч байгаа бөгөөд жагсаалт нь хэрэглэгчдийнх бөгөөд хэрэглэгч бүр түлхүүр-утга хосын багц гэдгийг бид урьдчилан мэдэж байх ёстой. JSON нь илүү товч боловч өөрийгөө тайлбарлах чадвар багатай.

Жишээ нь:
                        
                            import json
                            data = '''
                            [
                                { "id" : "001",
                                    "x" : "2",
                                    "name" : "Chuck"
                                } ,
                                { "id" : "009",
                                    "x" : "7",
                                    "name" : "Brent"
                                }
                            ]'''
                            info = json.loads(data)
                            print('User count:', len(info))
                            for item in info:
                                print('Name', item['name'])
                                print('Id', item['id'])
                                print('Attribute', item['x'])
                        
                    

Application Programming Interfaces - API

API

Бид одоо HyperText Transport Protocol (HTTP) ашиглан программуудын хооронд өгөгдөл солилцох чадвартай болж, eXtensible Markup Language (XML) эсвэл JavaScript Object Notation (JSON) ашиглан эдгээр программуудын хооронд нааш цааш илгээж буй нарийн төвөгтэй өгөгдлийг илэрхийлэх аргатай боллоо.

Дараагийн алхам бол эдгээр техник-ийг ашиглан программ хооронд тогтсон нэг дүрмээр мэдээлэл солилцох юм. Эдгээр программ хоорондын мэдээлэл солилцохдоо баримтлах дүрмийн ерөнхий нэр нь Application Program Interfaces (API) юм. Биднийг API ашиглах үед ерөнхийдөө нэг программ нь бусад программуудад ашиглах боломжтой багц үйлчилгээг бий болгож, программаас үзүүлж буй үйлчилгээнд хандахын тулд дагаж мөрдөх API- уудыг (жишээ нь: "дүрэм") нийтэлдэг.

Жишээ нь:

http://py4e-data.dr-chuck.net/json? хаягаар хандалт ирвэл ямар хариу үйлдэл үзүүлэх, ямар форматтай өгөгдөл эргэж ирэх, алдаа гарвал ямар алдаа ирэх нь тодорхой байх бөгөөд харилцаж байгаа аппууд ямар хэл дээр бичигдсэн нь хамаагүй бүгд нэг стандарттай дүрмээр харилцана гэсэн үг.