Modern APIs with FastAPI and Python Transcripts
Chapter: Accepting inbound data
Lecture: Showing recent events on the home page
0:00 Well, we're able to create some reports.
0:02 And if we go and run our report apps and say
0:05 "show me the reports", I guess they're not there anymore.
0:09 A new report. This will be in New York City now we can see them.
0:13 There's some reports there. If we go to the home page,
0:16 you don't see anything. Just see
0:17 here's some examples of how you might call this,
0:19 and we are not even documenting all the API here.
0:22 But nonetheless, what I would like to do is
0:24 I would like to also show those reports right here on the home page,
0:28 just below this example. It doesn't necessarily make sense for this project,
0:31 but just to show you sort of integrating into the templates.
0:35 So let's go over here. Look at our view and
0:38 our home. And over here we're returning a template response.
0:41 And what else? Maybe we wanna include
0:43 this is all the data that is available to the template.
0:46 Maybe we wanna have events or reports or something like that.
0:51 How do we get that? Well, that is super easy. We go,
0:53 we put this into a separate library on purpose.
0:55 Report service like that, and we just say get reports, there we go.
1:00 That is it. Actually, is this async? It is
1:03 async, so we need to await it.
1:06 Await it, which means this needs to be async. There,
1:09 that's that. And this data over here is going to be available to the template,
1:14 so I'll put that maybe separate, like this.
1:17 We're gonna pass this data over,
1:18 and it will have events. And let's just go and add that down here, under
1:22 home, under index. What do we want to do with this? After the list, after
1:26 this. So if there are some recent weather events,
1:35 let's just do a ul with an li inside of it.
1:39 And then this we're going to repeat,
1:40 we'll say "for e in events".
1:48 Notice, we're not getting help here,
1:50 so we probably need to set our template language
1:54 to Jinja, there we go.
1:57 So we're going to put in here.
1:58 We're gonna put just put "e.description".
2:02 Let's just put the city first "e.location.city
2:09 e.location.country and a colon".
2:12 Alright, so nothing happening there yet.
2:17 We're gonna need to go and create one again,
2:18 aren't we? Let's go back to our little client and say,
2:21 I want to see the reports. Oh,
2:23 no, it should be there says New York City has a report.
2:26 Uh, what happened? I haven't restarted the app, and the app over here to
2:30 be rerun, to do this of course,
2:32 that's going to mean it's empty again, we're gonna need to do report.
2:37 It's raining, raining in Seattle. Wow.
2:42 And let's add another report. It's frosty in Portland.
2:47 Now we see them. There's two. Over here,
2:50 check that out. Recent weather events Portland,
2:53 US. It's frosty. Seattle, US.
2:56 It's raining. We could even do something to combine these.
2:59 That might be fun. We could go and say,
3:01 give us the actual temperature. And when we create these events,
3:05 right. So over here, when we do this add report,
3:10 we could actually store as part of the report,
3:12 stuff that we get back from our weather service here,
3:15 like submit a city we said,
3:17 Well, let's pull up the temperature and store that we could make this really interesting
3:20 and intertwined, but hopefully you get the idea.
3:23 Let me add one thing. If there's no recent weather events,
3:26 I would like to just not show that. So let's do that real quick.
3:35 Alright, so if we refresh this, that shows up.
3:38 But if I restart it which will empty out our events, now it's empty.
3:43 Once we add one again reports some weather it's raining,
3:48 raining Seattle. Refresh it. Boom, they come back.
3:51 OK, so just to show you the data that we're working with over the
3:55 API, totally makes sense to have maybe some client reporting it,
3:59 but the Web app showing it. Anyway,
4:02 Hopefully that diversion between creating the client and showing it here on the page was worthwhile
4:07 You can see it's really,
4:09 really, really easy to do.
4:11 That's the HTML we had to write.
4:13 That is the API or view method code
4:18 we had to write. All this stuff was already done, it's just putting the larger building blocks together.