Golang ialah bahasa pengaturcaraan yang sangat popular yang dibangunkan oleh Google dan disukai oleh pembangun kerana kecekapan tinggi dan prestasi cemerlangnya. Walaupun Golang digemari oleh ramai pembangun, terdapat sedikit panduan dan sumber untuk pembangun yang menggunakan Golang untuk melaksanakan SOAP. Dalam artikel ini, kami akan memperkenalkan proses bagaimana Golang melaksanakan SOAP.
Pertama, mari kita lihat SOAP secara ringkas. SOAP (Simple Object Access Protocol) ialah protokol berasaskan XML untuk bertukar-tukar maklumat antara aplikasi web. SOAP biasanya digunakan dengan WSDL (Web Services Description Language) dan UDDI (Universal Description, Discovery, and Integration). Perkhidmatan web biasanya terdiri daripada mesej permintaan dan respons menggunakan SOAP sebagai protokol untuk menghantar dan menerima data, dan fail WSDL yang mengandungi maklumat tentang perkhidmatan web yang tersedia.
Untuk melaksanakan SOAP di Golang, kita perlu menggunakan perpustakaan Go yang sepadan. Dua yang berikut popular pada masa ini:
Dalam artikel ini, kami akan memperkenalkan cara menggunakan perpustakaan Go-SOAP untuk melaksanakan protokol SOAP. Pertama, kami perlu menambah pakej sabun go pada projek Go kami. Ia boleh dipasang menggunakan arahan berikut:
go get -u github.com/tiaguinho/go-soap
Kemudian, kita perlu menentukan permintaan untuk perkhidmatan web SOAP. Permintaan akan dibina berdasarkan XML, berikut ialah contoh permintaan:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yt="urn:youtube"> <soapenv:Header/> <soapenv:Body> <yt:GetVideoInformation> <yt:VideoID>xxxxxxxxxxx</yt:VideoID> </yt:GetVideoInformation> </soapenv:Body> </soapenv:Envelope>
Dalam contoh di atas, nama permintaan ialah GetVideoInformation dan nilai parameter ialah VideoID = xxxxxxxxxxxx.
Seterusnya, kita perlu mentakrifkan respons perkhidmatan Web SOAP, yang juga dalam format XML Berikut adalah contoh respons:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yt="urn:youtube"> <soapenv:Header/> <soapenv:Body> <yt:GetVideoInformationResponse> <yt:Title>Title of the Video</yt:Title> <yt:Description>Multiline Description</yt:Description> </yt:GetVideoInformationResponse> </soapenv:Body> </soapenv:Envelope>
Dalam struktur, anda perlu. sertakan alamat perkhidmatan Web SOAP, Nama Fungsi, permintaan dan format respons. Berikut ialah contoh kod:
import ( "net/url" "github.com/tiaguinho/go-soap" ) // SOAP 请求体 type GetVideoInformationRequestEnvelope struct { SOAPEnv string `xml:"xmlns:soapenv,attr"` XSI string `xml:"xmlns:xsi,attr"` Yt string `xml:"xmlns:yt,attr"` Body GetVideoInformationRequestBody } // SOAP 请求部分 type GetVideoInformationRequestBody struct { GetVideoInformation YoutubeRequest } // Youtube Request type YoutubeRequest struct { VideoID string } // SOAP 响应体 type GetVideoInformationResponseEnvelope struct { SOAPEnv string `xml:"xmlns:soapenv,attr"` Yt string `xml:"xmlns:yt,attr"` Body GetVideoInformationResponseBody } // SOAP 响应部分 type GetVideoInformationResponseBody struct { GetVideoInformationResponse YoutubeResponse } // Youtube Response type YoutubeResponse struct { Title string `xml:"Title"` Description string `xml:"Description"` } func main() { // 服务地址 soapURL, _ := url.Parse("http://example.com/soap") soapClient := soap.NewClient(soapURL) // 函数名称 soapRequest, err := soapClient.NewRequest("http://www.youtube.com", "GetVideoInformation") if err != nil { log.Fatalln(err) } // 填写请求信息 soapRequest.Body = &GetVideoInformationRequestEnvelope{ XSI: "http://www.w3.org/2001/XMLSchema-instance", SOAPEnv: "http://schemas.xmlsoap.org/soap/envelope/", Yt: "urn:youtube", Body: GetVideoInformationRequestBody{ GetVideoInformation: YoutubeRequest{ VideoID: "xxxxxxxxxxx", }, }, } // 发送请求 soapResponse, err := soapClient.Do(soapRequest) if err != nil { log.Fatalln(err) } // 解析响应数据 var result GetVideoInformationResponseEnvelope if err := soapResponse.Unmarshal(&result); err != nil { log.Fatalln(err) } // 打印结果 fmt.Println("Title:", result.Body.GetVideoInformationResponse.Title) fmt.Println("Description:", result.Body.GetVideoInformationResponse.Description) }
Dalam pembangunan web moden, SOAP telah digantikan oleh REST dan JSON, tetapi dalam beberapa senario tertentu, protokol SOAP masih digunakan. Jika anda sedang mencari cara untuk melaksanakan SOAP menggunakan Golang, contoh di atas akan membantu anda bermula. Kecekapan dan model keselarasan Golang menjadikannya alat yang berkuasa untuk perkhidmatan web, menjadikannya lebih mudah dan lebih cekap bagi pembangun untuk menyelesaikan kerja mereka. Berseronoklah bersama Golang!
Atas ialah kandungan terperinci Bagaimana Golang melaksanakan proses SOAP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!