Modern APIs with FastAPI and Python Transcripts
Chapter: Accepting inbound data
Lecture: Concept: Submitted a weather report

Login or purchase this course to watch this video and the rest of the course contents.
0:00 Let's talk about how we're able to submit a weather report and all the moving pieces
0:04 in our API. So we started out by using our existing location pydantic
0:09 model, where it already had the validation.
0:11 The city is required. The other stuff is either optional or optional with defaults.
0:15 And part of the thing that they're submitting, part of the report, is the location where
0:19 that happened, right? Also,
0:22 we need additional information along with that location.
0:25 What happened there? So instead of just taking a location and a description separately,
0:29 we could actually go through pydantic and say
0:32 we're going to create a report submittal class,
0:34 and it has a location, and pydantic will actually do that hierarchical binding by traversing
0:40 the thing that was submitted, finding its location,
0:42 then binding that to a location
0:43 object and so on. Beautiful.
0:45 This is not the final thing we wanted to save or send back.
0:48 But this is what we accepted from the user.
0:50 Remember, we had a reports class that derive from report submittal. Here,
0:54 we're using the location exactly to find above and pydantic binds that together.
0:59 And then finally, we just have our async report post, or we gave it
1:03 a name. Here it's just reports.
1:05 Could be add report, something like that.
1:06 It takes a reports submittal and it's not documented here,
1:10 but add Report returns a proper report
1:12 object. That's it. This is all we got to do,
1:15 and it is super clean. Pydantic handles so much of it.
1:19 Remember also, that it's not as easy to test the post API endpoints
1:24 as it is to test the get ones in your browser.
1:26 So you should look at something like Postman or some other tool that will let you
1:30 very carefully control what gets sent over to your API and test it.