What's an API?

What's an SDK?
And how are the two related? 
How can APIs and SDKs help streamline my cloud app development workflows?
Let's say you're developing a mobile app for a veterinarian clinic, and the idea is for this mobile app to actually allow a receptionist to take a picture of a pet as it enters the clinic and the app will communicate with a visual recognition service that's running on the cloud.
And the idea is for the service to return the pet's name and bring up their file.

So, how do we do this? 

How do we communicate between the mobile app and this cloud-based service? 

Well, that's where APIs and SDKs come in. 

Let's get started by talking about APIs, and we'll actually be comparing the two.
So, first of all, APIs are all about communication.
So, there are a set of definitions and protocols for apps or services to talk to other apps or services.
So, you can kind of think of them like a bridge between your app and, say, this cloud-based visual recognition service.
So, what does "API" stand for anyway? 
Well, 
it's Application Programming interface - A.P.I.

And what are some of the aspects of APIs that make them useful?
Well, like I said they're they're all about communication.
So, communicating between a service and another service, an app and another app, it's it's how they talk to each other.
Next, they're all about abstraction.

What does "abstraction" mean? So, inside the VR service, up in the cloud, there's probably potentially thousands of lines of code running up there,  right? And you as a developer of a mobile app you don't want to have to worry about, "OK, which method in this service do I call to get the pet's name?" You don't want to have to worry about that.

So, what an API does is it abstracts away all that complicated logic so you just have to worry about getting just the  data you need. It simplifies the process. And third, APIs are standardized. Meaning, there's industry-defined standards  for how to define an API and there's a few formats that are popular for APIs.

You may have heard of SOAP, GraphQL, or REST, - which, fun fact, stands for "Representational State Transfer".

So, what are some of the building blocks of APIs? 
First of all, to actually send data, or send what's called a "request" from the mobile app to the VR service on the cloud you need to have a few different pieces. 

So, for a REST API call request you need to have what's called an operation.

So this is this could be HTTP methods like POST, PUT, GET, DELETE.

In this case it would be a POST method because you're sending a request over to the service which might include something like maybe the file name of the image you took of the pet.
Next, would be parameters, this is optional.

So, this, in this case, might be the file name of the image you took. So maybe cat.jpeg - if it's a cat that you took a picture of. And finally, would be the endpoint. So, that's the URL, basically, of the visual recognition service that you're trying to talk to. So, maybe that's, you know, it's some URL-slash-analyze.
Great, so that's your request, right? 
So, this is what makes up a request. 
How about a response? 
What might a REST API response call that you receive back from the visual recognition service look like? 

Typically it's it's some form of raw data, maybe JSON.
So, a request might look something like, or sorry, a RESPONSE, might look something like this. So, you have sort of this this data object that might include you know, the result, the type which is a cat, and maybe the name - which, in this case may be "Mittens" just walked into the  clinic.
Great, so that's sort of the building blocks of what an API is. As a developer though, 
How do you actually call an API in your code? 

You don't want to have to worry about setting up your request with all these building blocks of operations, parameters, endpoints, and dealing with raw JSON objects, right? 

So that's where SDKs come in and really shine. So, let's talk about SDKs, what does that stand for? 
Well it is Software Development Kit, S.D.K. Pretty straightforward, right? 
So, SDKs, you can really think of like a toolbox of tools, or code that actually call APIs for you. Pretty cool, right? 

So, you may be specialized in one programming language over the other,   you know, there's SDKs in a variety of languages. So, there's maybe an SDK in Java, in Node, maybe Go, or Python - whichever language that is your specialty there's probably an SDK for you. 

Perfect. 

So, back to our example over here, what might an SDK look like in this example? So, with an SDK, let's let's go ahead and put our little SDK toolbox within the mobile app and, for this case, since it's a mobile app, say, we'll use the Java SDK. 

Great! 
So, in this Java SDK, rather than having to configure your request manually with all these building blocks, you might actually call just a method, that's maybe called, I don't know, "Get Result", that will actually call these various building blocks - the operation, the parameters, and the request for you, it'll make it for you and it'll make that API request for you with code. 

In response, you'll get a response but it won't be necessarily a JSON object, it might be some code, maybe a native model object in Java called an "Analyze Response Object". So, the code might look something like this. 
So, you have an Analyze Response Object that you call the "Visual Recognition Analyze and Get Results" method. 
You pass in a parameter, which is "cat.jpg", which is the name of the file that you sent over the visual recognition service and, in response, you can actually go ahead and set a label in your mobile app to be "Mittens".
So, that's the data you received in the form of an analyze response model object in Java, via your SDK, and you're able to see Mittens has entered the building.
So, hopefully, this kind of summarizes what's an API, what's an SDK, what are both used for, and how they are truly fundamental tools in your cloud app development toolbox.
Thank you......