Python Jumpstart by Building 10 Apps Transcripts
Chapter: App 5: Real-time weather client
Lecture: Calling the API
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
It might seem like we're a long way from being done with this application.
0:04
We've talked a lot about some honestly slightly complicated topics with virtual environments and dependencies and
0:10
manage them and all that kind of stuff. But we're actually extremely close to being done,
0:14
as you will see. So let's go over here to the "call_weather_api". I've have already written "import requests" at the top, so we can jump down here.
0:20
Remember, we've already got the location as a named tuple, and we're using it to put together the URL. So here we just said, we would call the URL.
0:29
Well, let's not say we would, let's do call it. So we're gonna get a response from the server. The way it works is you go to request you say,
0:36
"get the URL", done. We've now downloaded the data from the Internet. How insane is that? So let's just print out what we got.
0:43
If I say Portland like that, response 200. 200 in the Web is okay, success. So that's good. There's all kinds of things here. One of them is the text.
0:56
So if we print out the text from Portland, what do we see? Oh oh oh.. broken clouds. How about that?
1:03
Super cool. Now we could use the libraries that understand strings and convert them to Python dictionaries by parsing the JSON document,
1:13
but requests already knows how to do that. It has a function called JSON. So if we write that and we type "Portland", it looks the same, Right?
1:22
But remember, Pythons representation of dictionaries has single quotes. Our Web server's returning double quotes.
1:27
So what actually came back is just data and it just when you print it out it looks basically the same.
1:32
So check this out. We'll say "data equals response dot JSON". Now, Before we go through that step,
1:38
we got to make sure that we actually got the right values. So what we need to do is say if for some reason we got something other than
1:45
a 200 ok request and JSON response, we just want to say "sorry we couldn't get you any weather".
1:50
So the easiest way for us to do that is to ask if the "response dot status code", that's that number, is in a set of things. We could do a
2:01
bunch of if statements or we could just say, "Is it in 400?" which would mean bad request, 404 like if you asked for a city that doesn't exist,
2:08
500, the server crashed. We could return "None". In fact, we could say, basically, it's not 200, return an error,
2:18
right? So here we'll print out "error", and then let's just put the "response dot text". A lot of times when there's an error,
2:25
you actually get an additional message in the text, so this might help us debug what's going on.
2:30
Like, for example, if we go and ask for the city such and such, it says "error, what we got back is 404, city not found".
2:38
Okay, so once we make it this far, we think we're in good shape, and this might, I'll leave it like this, but you might just say "not equal to 200".
2:46
So the last thing I want to do is I actually want to convert this response into something that's easier for us to work with.
2:54
But we're already off to a pretty good start. What about Boston? Whoo hoo! Boston! Alright, we returned it. We haven't printed out anything yet,
3:03
but our final step is going to be to convert that into something meaningful we can show to the users.