RESTful API са популярни архитектури за пренос на данни в мрежата. RESTful API обикновено използват HTTP, което ги прави подходящи за случаи, когато липсата на гражданство е важна.
Като всеки сървърен език, можете да взаимодействате с HTTP протокола и да правите HTTP заявки в Go.
Първи стъпки с използването на RESTful API в Go
The http предоставя повечето от функционалностите, от които ще се нуждаете за взаимодействие с HTTP протокола в Go. Това включва отправяне на HTTP заявки и не е задължително да имате нужда външни зависимости, като Gin или база данни.
Можете да използвате http пакет за използване на API и извличане на страници уеб скрапинг в Go.
Импортирайте тези пакети, за да започнете да правите HTTP заявки в Go.
импортиране (
"байтове"
"кодиране/json"
"fmt"
"io/ioutil"
"net/http"
)
Ще използвате байтове пакет за манипулиране на байтови срезове, the json пакет за форматиране на данни за заявка, the fmt пакет за запис на стандартен изход, the ioutil пакет за вход и изход и http пакет за изпращане на заявки.
Проста GET заявка в Go
Типично ВЗЕМЕТЕ заявките четат данни от сървър и могат да предоставят параметри за данните в зависимост от естеството и спецификацията на API.
В този урок ще научите как да използвате RESTful API с помощта на простата услуга за заявка и отговор на httpbin.
Ето пример за правене на HTTP заявка с Go:
url := "https://httpbin.org/get"
отговор, грешка := http. Вземи (url)
ако грешка!= нула {
fmt. Printf("Имаше грешка от API заявката %s", грешка. грешка ())
} друго {
// продължава [1] ...
}
The URL адрес променливата е крайната точка, към която изпращате заявката. The Вземете методът приема URL адреса, изпълнява Вземете заявка и връща отговора, включително неговите заглавки и тяло.
Можете да обработвате всякакви грешки от заявката в зависимост от вашите изисквания. Ако няма грешки, можете да продължите да извличате необходимата ви информация от Вземете искане.
} друго {
//... [1] продължава
responseData, грешка := ioutil. ReadAll (отговор. тяло)
ако грешка!= нула {
fmt. Printf("Възникна грешка при анализирането на тялото на заявката %s", грешка. грешка ())
} друго {
// продължава [2] ...
}
}
Отговорът е Тяло полето съдържа тялото на отговора. Използвайки ReadAll метод на ioutil пакет, можете да прочетете тялото на отговора и да се справите с възможни грешки.
} друго {
//... [2] продължава
fmt. Println(низ(данни за отговор))
}
The друго операторът отпечатва тялото на отговора на вашата конзола, ако няма грешки от операцията за четене.
Ето резултата от ВЗЕМЕТЕ заявка до крайната точка на httpbin.
Проста POST заявка в Go
Типичните POST заявки предоставят полезни данни на сървъра и сървърът връща отговор в зависимост от операцията.
Ето една проста структура за кодиране на JSON полезен товар към сървъра като част от POST заявката.
Тип JSON структура {
инфо низ
съобщение низ
}
The JSON struct има инфо и съобщение низови полета и ще инициализирате екземпляр на структура за заявката.
url := "https://httpbin.org/post"
jsonInstance := JSON {
информация: "очаквам успех",
съобщение: "заявката трябва връщане ",
}
The URL адрес променлива съхранява крайната точка на POST заявка от уебсайта httpbin. The jsonInstance променливата е екземпляр на структурата JSON, която можете да използвате за съхраняване и изпращане на структурирани данни.
Можете да използвате маршал метод от json пакет за форматиране на JSON за заявката.
jsonData, грешка := json. Маршал (jsonInstance)
ако грешка!= нула {
fmt. Println("имаше грешка с JSON", грешка. грешка ())
} друго {
// продължава [1] ...
}
The маршал метод също връща грешка, която можете да обработите. Ако няма грешки с операцията за маршалиране на JSON, можете да продължите да правите POST заявката.
Можете да използвате Публикувай метод за правене на POST заявки. The Публикувай методът приема крайната точка на URL адреса, типа съдържание на заявката и буфер на полезния товар. Връща отговор и грешка.
} друго {
//... продължение [1]
отговор, грешка := http. Публикуване (url, "приложение/json", байтове. NewBuffer (jsonData))
ако грешка!= нула {
fmt. Println("имаше грешка със заявката", грешка. грешка ())
} друго {
// продължава [2] ...
}
}
Отново можете да прочетете тялото на отговора, като използвате ReadAll метод на ioutil пакет:
} друго {
//... продължение [2]
данни, грешка := ioutil. ReadAll (отговор. тяло)
ако грешка!= нула {
fmt. Println("възникна грешка при четене на тялото на заявката", грешка. грешка ())
} друго {
fmt. Println(низ(данни))
}
}
The Println извежда резултата от HTTP заявката към вашата конзола.
Като httpbin документация указва, тази крайна точка на POST връща данните за заявката, които сте й изпратили.
Създаването на уеб приложения в Go е лесно
Можете да създавате уеб приложения с различни функции в Go без зависимости.
The http пакетът има функциите, от които ще се нуждаете за повечето си операции. Можете да използвате този пакет с други като json пакет за JSON операции, the контекст пакет за сигнализиране и шаблонен пакет за шаблониране. В стандартната библиотека има много други пакети.