From Python and data formats to configuration templating with Jinja, we’ve explored key foundational technologies and skills that will make you a better network engineer. In this chapter, we’re going to put these skills to practical use and start to consume and communicate to different types of network device APIs.
In order to best help you understand how to start automating networks, this chapter is organized into three sections:
We examine the architecture and foundation of different APIs, including RESTful HTTP-based APIs, non-RESTful HTTP-based APIs, and NETCONF.
We introduce tools commonly used for testing and learning how to use each API type.
Finally, we look at Python libraries that allow you to start automating your networks. We’ll look at the Python requests library for consuming HTTP-based APIs, ncclient for interacting with NETCONF devices, and netmiko for automating devices using SSH.
As you read this chapter, please keep in mind one thing—this chapter is not a comprehensive guide on any particular API, and it should not serve as API documentation. We will provide examples using different vendor implementations of a given API, as it’s very common to be working in a multi-vendor environment. It’s also important to see the common patterns and unique contrasts between different implementations of the same API type.