Modern APIs with FastAPI and Python Transcripts
Chapter: Building our first API
Lecture: Know your HTTP verbs
0:00 You can see that working with http verbs: get, post, put, and so on, all of those things are right up in front when we work with building
0:09 API's with FastAPI, and understanding what verbs are out there and when they should be used is really important when you're building REST-ful API's.
0:18 So let's just take a moment and talk about the four most common http verbs.
0:22 There are others that we're not gonna mention here, you can go Look at this link at the bottom to see them all.
0:27 The one that everyone who has interacted with a computer on the web is familiar with is "get". So get is just give me the information of this resource.
0:36 Like, anytime you're using a browser, most things you're doing are just click a link,
0:40 do it get. so the get requests a representation of a specified resource, in our case
0:45 the result of that calculation, and it should only be used to retrieve data.
0:51 One of the really important ideas around get is that it's supposed to be potentially cacheable,
0:56 whether or not you access it multiple times or whatever, it shouldn't change the state of
1:00 the system. There was a really interesting bug in Wikipedia way, way, way back in the early days when there was a delete button,
1:08 actually had a just a get request to delete a resource, and then the web spiders like Google went through and started trying to index Wikipedia and
1:15 started following those links and started deleting the pages. So, yeah, don't do that kind of stuff.
1:20 Get should just return things. Think of get as "read only". If you wanna change something, if you want to modify something,
1:27 use "http post". This is to submit some new object, some new data, which is going to cause a change in the server, potentially.
1:37 So if you're gonna log in, you're gonna create an account, you might submit your username and your password that you want to create the account with.
1:44 And of course, the state that's being changed on the server as well now there's a new account with that username and password that you can log in.
1:51 Delete, similar to post in that it modifies things, but if I want to remove a resource, so if I had like a bookstore and I had "/books/book_7"
2:00 and we decided, you know, we don't want book seven anymore, then the API could set it up so I do a delete request against that
2:07 URL, against "books/book_7" and the server could respond by deleting book seven, no
2:13 longer there. Also similar to post is we have put. Now with post you say "I have some data, I want you to create it on the server".
2:20 Probably what comes back is "Great, I created this, and here is where it lives". But if you already know where you want it to be in terms of the
2:30 URL, think of like a blog post, a blog post you might already know the url where you want your blog post to live,
2:35 but it doesn't yet exist, you could do an http put and say "I would like to make this location have this blog post",
2:42 right? You don't let the server control where the thing gets created, you say explicitly "server Put it here". This is not nearly as common as post,
2:50 but sometimes you'll see it used. These are the four most common http verbs as far as writing API's and you know
2:58 explicitly making them part of your API. There are a bunch of others, like I said, at the bottom,
3:02 you can check out, but get for read only, post for making changes, delete to delete, put if you know where it's going.