YouTube2Text

Everything you need to know about REST — Transcript

by Arpit Bhayani · 4,039 words · 574 segments · language en · Watch on YouTube

Full transcript

  1. 0:00So rest stands for representational
  2. 0:02state transfer and here the key idea
  3. 0:05around this specification is
  4. 0:07representation of entities. So in a
  5. 0:10standard client server architecture that
  6. 0:12we have your client sends a request and
  7. 0:15your server sends a response. The
  8. 0:18response that server sends is in some
  9. 0:20representation. More often than not we
  10. 0:22have seen JSON as the representation.
  11. 0:24Here your client is demanding something
  12. 0:27from the server and your server is
  13. 0:29basically serving the response. Right?
  14. 0:32So here what you have on rest is
  15. 0:36everything is a resource. Resource
  16. 0:39implying that an entity in your system.
  17. 0:42For example, if you are building your
  18. 0:44library management system, then student
  19. 0:47is a resource or book is a resource. If
  20. 0:51you're building your e-commerce, then
  21. 0:52your seller is a resource. your uh your
  22. 0:55user is a resource, your item is a
  23. 0:58resource or your purchase order is also
  24. 1:01a resource. So the idea here is that in
  25. 1:05rest everything is a resource. It can
  26. 1:08have its own set of storage. We are not
  27. 1:10worrying about that. That is
  28. 1:12independent. Rest is actually just a
  29. 1:16specification on how your client should
  30. 1:20be asking things from your server and
  31. 1:22how your server and how your server
  32. 1:24should response. That's it. That's all
  33. 1:27about rest. So rest being just a
  34. 1:30specification, it does not enforces us
  35. 1:33to do anything.
  36. 1:35It simply suggests that hey you should
  37. 1:38be doing these things, right? So that's
  38. 1:41where resource becomes the key entity uh
  39. 1:45in while while we are adopting rest
  40. 1:47right. So any and every data that we
  41. 1:50have in our service in our system is an
  42. 1:54exposed resource. For example, students
  43. 1:57in my library management system is a
  44. 2:00resource which I'm exposing through HTTP
  45. 2:03endpoints. Right? So the way we the way
  46. 2:05we traditionally do but the way student
  47. 2:07is stored in my DB is up to me like rest
  48. 2:12cannot enforce how I would want to store
  49. 2:15that information in my database. Rest
  50. 2:18just tells that when I'm talking to my
  51. 2:20API server this is the format that I
  52. 2:22expected but it does not enforce that
  53. 2:25hey you have to store it in tables rows
  54. 2:27or you have to store it in MongoDB or
  55. 2:29you have to store it in document storage
  56. 2:30or key value store. No, not like that.
  57. 2:33REST is only there to tell us how your
  58. 2:36client and server should communicate or
  59. 2:39the way it should communicate.
  60. 2:40Everything else is part of our
  61. 2:43implementation.
  62. 2:45So say we put all the students
  63. 2:47information in one table in our
  64. 2:48relational storage. All messages in our
  65. 2:51chat application maybe goes into Apache
  66. 2:53Cassandra. We don't care about that. The
  67. 2:55idea is that the way your data is stored
  68. 2:58in your database is independent from how
  69. 3:01your data is served to your user. So you
  70. 3:04may choose to store your student
  71. 3:05information in tables, rows, and columns
  72. 3:08and serve it as a JSON response.
  73. 3:11Perfectly fine. You don't need to have
  74. 3:13synergy between the two. You don't need
  75. 3:15to have the exactness between the two.
  76. 3:18The idea is simple. Store it however you
  77. 3:20want but serve it the way client is
  78. 3:23asking your data for or the
  79. 3:25representation in which client is asking
  80. 3:26your data to be served. Right? So this
  81. 3:29is where what rest gives you the
  82. 3:31flexibility that your client can ask for
  83. 3:35a particular representation where your
  84. 3:38client says hey give me this data in CSV
  85. 3:42format or give me this data in JSON
  86. 3:44format or give me this data in XML
  87. 3:46format. Your client has an option to ask
  88. 3:51uh to ask from the server a particular
  89. 3:54data in a particular representation
  90. 3:56which is why it is called as
  91. 3:58representational state transfer. So you
  92. 4:01and obviously it is not mandated as such
  93. 4:04but your server should be able to
  94. 4:06support that sort of representation but
  95. 4:07at least there is a way to do it which
  96. 4:09is why you see the HTTP request we make
  97. 4:12has a content type header that hey I
  98. 4:15sending you content in this type and I'm
  99. 4:17expecting a content in this type which
  100. 4:19is why HTTP is very widely adopted to
  101. 4:21implement rest.
  102. 4:23So here a a very solid rest
  103. 4:26representation would have multiple
  104. 4:29representation of your entities maybe
  105. 4:31XML format, JSON format but it is not
  106. 4:33mandated that you have to have all of
  107. 4:34them. You can choose to just have JSON
  108. 4:38as your representation format which is
  109. 4:39perfectly fine.
  110. 4:42Okay. So let's move to the next part
  111. 4:44where what is all about this
  112. 4:46representation that we are talking. So
  113. 4:48here your client demands a particular
  114. 4:51representation of the entity maybe JSON,
  115. 4:53text, XML, CSV and your server has to
  116. 4:57send the response in that particular
  117. 4:59format so long as it is supporting it.
  118. 5:01Internal representation can be
  119. 5:02different. Your client would make an we
  120. 5:06know that most common implementation of
  121. 5:07rest is over HTTP. So I'm just basically
  122. 5:09carrying forward on that. Uh your client
  123. 5:12makes an HTTP request let's say /c
  124. 5:15customer/123.
  125. 5:17It gets to the server. Server goes to
  126. 5:18the database which is your relational
  127. 5:20database. Gets it from rows and columns
  128. 5:22and creates this entire JSON object and
  129. 5:24sends the information in JSON to the
  130. 5:26client. So you have two different
  131. 5:29representation. One is internal
  132. 5:30representation of your entity which is
  133. 5:32in table rows and columns and one is
  134. 5:34external representation of your entity
  135. 5:36which is in JSON. So it it it purely
  136. 5:40depends on your server's implementation
  137. 5:41on how it wants to send the data or what
  138. 5:44all representation would it support.
  139. 5:45Right? So here the idea is that any and
  140. 5:50every operation that comes or any and
  141. 5:52every request that comes from the client
  142. 5:54that request has to happen over a
  143. 5:58resource and this resource is typically
  144. 6:00specified in the HTTP URL that we send.
  145. 6:04So here you like when you want to create
  146. 6:07a resource, update a resource or delete
  147. 6:10a resource, any sort of thing that you
  148. 6:11want to do, you can specify it as a
  149. 6:14verb. Hey, that this is the action that
  150. 6:17I want to take and this is the resource
  151. 6:18on which I want to take this action just
  152. 6:21a specification. So rest is again just a
  153. 6:25specification. So it does not enforce
  154. 6:27that hey you have to use this protocol.
  155. 6:29So rest is saying that hey you can
  156. 6:32choose to use TCP you can choose to use
  157. 6:34HTTP you can choose any protocol you
  158. 6:37like that to implement rest is just a
  159. 6:40specification. So the most common
  160. 6:43implementation of rest is with HTTP and
  161. 6:46it gels so beautifully well that
  162. 6:50by default when we now write APIs we
  163. 6:53write rest APIs right the way we define
  164. 6:55our URLs is how rest recommends us to do
  165. 6:58that and both have become very
  166. 7:01synonymous.
  167. 7:03the way uh the way we expose endpoints
  168. 7:06the way we think we are writing rest we
  169. 7:08may not even be writing rest we may just
  170. 7:10exposing HTTP endpoints but we always
  171. 7:13think that we are writing rest endpoints
  172. 7:15right so it's that synonymous so why did
  173. 7:18rest and http gel so well what what
  174. 7:21happened what happened here so here one
  175. 7:25thing that made http uh really solid for
  176. 7:30us to adopt rest is http verbs Verbs as
  177. 7:33in get, put, post, delete, HTTP methods
  178. 7:35that we have. That is a very powerful
  179. 7:39feature because with HTTP what you have
  180. 7:43is you have this verb or you have this
  181. 7:45HTTP method get put post delete and you
  182. 7:48have a path or you have a URL on which
  183. 7:50you are making that request right. So
  184. 7:52this URL is nothing but your resource
  185. 7:56and your HTTP verb is the action. So for
  186. 8:00example, if I want to delete a
  187. 8:02particular user, we expose an endpoint
  188. 8:06slash users/ user ID and we expose the
  189. 8:09method delete on that. So because delete
  190. 8:11is the HTTP verb or HTTP method that is
  191. 8:14out of the box supported by all web
  192. 8:16servers out there, you can directly
  193. 8:18invoke an HTTP delete on / user/1 which
  194. 8:24is which becomes your resource
  195. 8:25identification. So what does this URL
  196. 8:28imply? This URL implies that for a type
  197. 8:31res for a type user
  198. 8:34which is identified by ID 1 delete it
  199. 8:38delete the particular resource. So this
  200. 8:42fits so beautifully well that your
  201. 8:45action is specified by HTTP method and
  202. 8:49your resource is identified by your URL
  203. 8:52and which is why we when we expose uh
  204. 8:56HTTP endpoint we think we are doing rest
  205. 8:58slight difference but you basically get
  206. 9:00the gist. So this has to be the
  207. 9:02identification of the resource. The the
  208. 9:04URL that you have has to be the
  209. 9:05identification of the resource while
  210. 9:07your delete, get, put, post, all of
  211. 9:10these are actions that you want to take
  212. 9:11on top of it. The best part over here is
  213. 9:15with HTTP verbs, we can multiplex it on
  214. 9:18the same resource. So for example I my
  215. 9:22URL is / students one which means for a
  216. 9:27for a entity type student anyone who is
  217. 9:30identified by ID 1 my URL would become /
  218. 9:34student/1
  219. 9:35and here if I would want to get the
  220. 9:37student detail I would do a get on this
  221. 9:39URL if I want to update a student detail
  222. 9:42I would do a post on this URL if I want
  223. 9:44to delete this student I would do a
  224. 9:46delete on this URL. So get, put, post,
  225. 9:48delete, standard four operations that we
  226. 9:50we typically go for. So here what we are
  227. 9:53so beautifully doing is we are so
  228. 9:56beautifully using the same URL just
  229. 9:58changing the method and the entire
  230. 10:00connotation is changed and this is a
  231. 10:03very well definfined uh specification as
  232. 10:06part of HTTP specification that hey
  233. 10:08these four methods would be there get
  234. 10:10post delete or obviously options patch
  235. 10:12and others are exist but you basically
  236. 10:15get this idea that HTTP because it is so
  237. 10:18widely adopted it has already support
  238. 10:20for HTTP methods
  239. 10:22which every single client and web server
  240. 10:25understands why not piggyback rest on
  241. 10:27top of it which is why we still you and
  242. 10:31uh we still expose just normal HTTP
  243. 10:33endpoint but we chose to do it in a
  244. 10:36certain way like /work
  245. 10:38no one's enforcing us to do it that way
  246. 10:40that is the rest way of doing it you
  247. 10:43could have also done something like this
  248. 10:45let's say I want to get details of a
  249. 10:47particular student I could have done I
  250. 10:49could have exposed an endpoint slash get
  251. 10:51student in which I am passing in body
  252. 10:54the student id and I'm getting this
  253. 10:56information out that is also an http
  254. 10:58endpoint but that is not rest
  255. 11:00implementation that is the difference so
  256. 11:03rest says use http methods wisely the
  257. 11:07URL should be an identification of your
  258. 11:10resource and not the action that you are
  259. 11:12taking so for example if I want to
  260. 11:14update the student I can say post I can
  261. 11:18expose a post method on / student/ / id
  262. 11:21and that would update the details of
  263. 11:22that particular student or otherwise I
  264. 11:24can expose /update student as a method
  265. 11:27or as an endpoint and I can take all the
  266. 11:29required parameter in the post body and
  267. 11:30do that action. So this is where
  268. 11:33basically this is exactly where the
  269. 11:34difference lies. Rest is how we are now
  270. 11:38accustomed to build endpoints /
  271. 11:41student/1 is the resource and get put
  272. 11:44post delete is the action. Right? So
  273. 11:47that's the key difference between HTTP
  274. 11:49and rest. So how we are using HTTP to
  275. 11:52implement rest. REST is a specification
  276. 11:55on how you should be talking to your
  277. 11:57server. the way you should be specifying
  278. 11:59the input and the output.
  279. 12:02Now let's talk about why HTTP gels like
  280. 12:06again one very solid reason why HTTP
  281. 12:08gels so well with rest because of
  282. 12:11toolings. So because web is very widely
  283. 12:14adopted obviously the internet is widely
  284. 12:15adopted and because of the already
  285. 12:18established tooling that we have for
  286. 12:21HTTP like for example you have clients
  287. 12:25like curl postman request in Python and
  288. 12:28whatnot you have clients to make HTTP
  289. 12:30request get HTTP response understand the
  290. 12:33headers part of it uh set the response
  291. 12:35headers and whatnot you have those
  292. 12:38toolings in place which means that you
  293. 12:41don't have to reinventably you don't
  294. 12:43have to build something very different
  295. 12:45for this sort of representation or this
  296. 12:47sort of specification.
  297. 12:49So that's where existing tooling is so
  298. 12:50good. Let's say with respect to clients
  299. 12:52that you can just import HTTP uh you can
  300. 12:55just import uh the request module in
  301. 12:57Python and start making HTTP request.
  302. 13:00You have the browser you can directly
  303. 13:01make post request through form
  304. 13:02submission and you have your uh and you
  305. 13:05have your rest specification implemented
  306. 13:07on your API server. Second web caches
  307. 13:10like engineext cache, varnish, haroxy,
  308. 13:13so many are there on which you can cache
  309. 13:15the responses out which means you can
  310. 13:18get good sort of performance without
  311. 13:21changing a lot of things because
  312. 13:23engineext and all you would anyway have
  313. 13:25with rest you are just leveraging what
  314. 13:28you already have. You don't have to
  315. 13:30build a separate caching mechanism to
  316. 13:31solve that problem. Engine X proxy so
  317. 13:34many things would do so well. Third,
  318. 13:36monitoring tools like distributed
  319. 13:38request tracing, uh packet sniffing,
  320. 13:41debugging, uh HTTP request response
  321. 13:44monitoring, alerting, uh then basically
  322. 13:47application performance monitoring,
  323. 13:48everything is very well built for HTTP
  324. 13:51as a specification. So why would you
  325. 13:54want to define your other specification
  326. 13:56and rebuild those things? You have your
  327. 13:58existing monitoring tools that would
  328. 14:00serve just well and get it adopted.
  329. 14:03That's why rest over HTTP uh it gels so
  330. 14:07well. Next, load balancers. You want to
  331. 14:09distribute load uniformly. HTTP based
  332. 14:12load balancers are there. They are
  333. 14:14ruling the world right now. And you have
  334. 14:18all of those things. Why would you want
  335. 14:19to have a separate load balancing
  336. 14:21strategy for your own specification?
  337. 14:24You don't need that. which is why it
  338. 14:26gels so so so beautifully well that you
  339. 14:28are using your existing ecosystem of
  340. 14:32tools and libraries and frameworks and
  341. 14:34infra components and whatnot and just
  342. 14:37gaining the benefit out of it and
  343. 14:39security control SSL uh optimization
  344. 14:42technique like compressions and all out
  345. 14:44of the box HTTP gives you those
  346. 14:46abilities or your web server gives you
  347. 14:47those abilities so you don't really have
  348. 14:49to worry a lot you can just piggy back
  349. 14:51upon existing tools right but obviously
  350. 14:54it So well but there are few downsides.
  351. 14:57These are just downsides of using rest
  352. 15:00over HTTP. This does not mean that we
  353. 15:02should not be using it. Obviously the
  354. 15:04world uses it. We use it but this does
  355. 15:06not mean that we should not be it's just
  356. 15:08that we have to be aware of what would
  357. 15:11be the potential downsides of using rest
  358. 15:13over HTTP just so that we don't make uh
  359. 15:16a mistake that would prove very costly
  360. 15:19in the future. First of all consumption
  361. 15:21is not easy. So here in in one of the
  362. 15:26previous videos we talked about RPCs
  363. 15:28right uh remote procedure calls there we
  364. 15:31saw how stubs are generated and that
  365. 15:34stubs makes things native to the
  366. 15:36programming language we are using
  367. 15:39rest on the other hand because it runs
  368. 15:42on top of HTTP there is no
  369. 15:43standardization standardization with
  370. 15:45respect to the stuff generation or
  371. 15:48native objects every single client of
  372. 15:51yours And obviously you can use HTTP
  373. 15:53client to make a call but when you get
  374. 15:55the response you are getting response
  375. 15:57say in JSON you have to convert it to a
  376. 15:59native object and then consume. So that
  377. 16:01is that additional thing that you have
  378. 16:03to take care of because it's rest runs
  379. 16:06on top of HTTP. There is no native
  380. 16:09language involved whatsoever. It's just
  381. 16:11a way for you to send a request and get
  382. 16:14a response in some format. Here we got
  383. 16:17it in JSON response but then you have to
  384. 16:20write those things on your own that I
  385. 16:22want to I got a JSON response I'm
  386. 16:24converting it into let's say you're
  387. 16:25writing in Python you get the JSON
  388. 16:27response you have to convert it into
  389. 16:28dictionary before you consume it let
  390. 16:30alone the corresponding classes that you
  391. 16:32are expecting right so consumption is
  392. 16:35not easy you have to uh do that extra
  393. 16:38cialization dialization conversion into
  394. 16:40native objects and whatnot that might
  395. 16:43become expensive for low latency
  396. 16:44application
  397. 16:46Second, consumption is repetitive.
  398. 16:48Obviously, it's not easy, but it is
  399. 16:50repetitive as well. Which means anyone
  400. 16:52and everyone who wants to consume the
  401. 16:54same uh resource or do that operation on
  402. 16:57the same resource, you have to write
  403. 16:58that same stuff again and again. For
  404. 17:00example, serialization, decentralization
  405. 17:02logics to and from native objects,
  406. 17:05failures, timeouts, retries,
  407. 17:06compression, security and whatnot.
  408. 17:09Everyone who is invoking the same
  409. 17:12resource or who is trying to do that
  410. 17:14same operation on that same resource
  411. 17:17let's say through multiple services they
  412. 17:18would all have to do it again and again.
  413. 17:21A company might have an internal
  414. 17:24standardization let's say a common way
  415. 17:26to do it but in most cases you would
  416. 17:29have to do that thing again and again
  417. 17:31right you would have to repeat or create
  418. 17:32a shared internal library so that you
  419. 17:34know not everyone has to write that same
  420. 17:36failures and retries and whatn not
  421. 17:39something that gpc or not really gpc but
  422. 17:42something that RPC abstracts it out for
  423. 17:44you here you would have to build that
  424. 17:47shared internal library and everyone has
  425. 17:49to do it and then they would be able to
  426. 17:51standardize the way the communication
  427. 17:53happens by masking or abstracting
  428. 17:55failures, retries and whatnot.
  429. 17:57The next is some web servers may not
  430. 18:00support all HTTP WS. So for a standard
  431. 18:03server like let's say Jersey or EngineX
  432. 18:05or your uh UWSGI servers, they support
  433. 18:09all HTTP WS. But let's say you made a
  434. 18:11decision choice of picking a particular
  435. 18:13HTTP server that only supports get and
  436. 18:17post, does not support put, delete,
  437. 18:18patch options. You are stuck with that.
  438. 18:21You are stuck with that which means that
  439. 18:23you are limiting your potential of using
  440. 18:25rest because by changing the HTTP method
  441. 18:28you are multiplexing actions on the same
  442. 18:31resource. Here you would not be able to
  443. 18:33do it. Here you would have just get and
  444. 18:36post on that. But if you'd want to
  445. 18:37delete you may want to expose some other
  446. 18:39kind of endpoint. So slash to run /1 /
  447. 18:42delete something like that which is not
  448. 18:45really restlike. Right? So the kind of
  449. 18:49web server you pick or the kind of text
  450. 18:50stack you go for you have to ensure that
  451. 18:52it supports all the HTTP verbs out
  452. 18:54there. But if your uh any of your
  453. 18:58component is not supporting verbs or all
  454. 19:00the HTTP verbs it will cause a problem.
  455. 19:03You then you are not really doing the
  456. 19:06rest way. Right? The next is HTTP
  457. 19:09payloads are huge. Example JSON. JSON is
  458. 19:13not the format built for low latency
  459. 19:16requirement. It is built for
  460. 19:18readability. It is not meant for low
  461. 19:20latency requirements. So that is where
  462. 19:23the HTTP payloads in the request and in
  463. 19:26the response that we get in most cases
  464. 19:28it would be JSON. So it takes time for
  465. 19:32your clients or for your server to
  466. 19:34understand the JSON create it or
  467. 19:36basically uh parse it into native object
  468. 19:38and then consume it. Plus the amount of
  469. 19:41data that is transferred with rest is
  470. 19:43very repetitive. You have the double
  471. 19:45quotes, the string, the the colon and
  472. 19:48then the value and then a comma. So many
  473. 19:51things are there which looks very
  474. 19:53redundant. So that is where the JSON
  475. 19:56payloads are very huge uh and not really
  476. 19:59suitable for low latency requirements.
  477. 20:01So that's where when you have ultra low
  478. 20:04when you have low latency requirements,
  479. 20:06you typically go for something like RPCs
  480. 20:08that use protobuff to to compress your
  481. 20:11message in a very very very short uh uh
  482. 20:15in a very short payload and then send it
  483. 20:17right but obviously it has its own uh
  484. 20:19disadvantages but you basically get the
  485. 20:21gist for have smaller uh unit of data
  486. 20:24transfer you would want to go or for
  487. 20:26ultra low latency requirement you might
  488. 20:28not want to go for uh rest over HTTP. TP
  489. 20:32plus with HTTP what you also get is
  490. 20:34every time you make a request you have
  491. 20:36to make a three-way handshake TCP
  492. 20:37connection then fire the request then
  493. 20:38get a response although you can use
  494. 20:40HTTP2 but again you have to be wary of
  495. 20:42the fact that which HTTP version are you
  496. 20:44using to communicate over rest the final
  497. 20:47downside that I want to talk about is
  498. 20:49switching protocols let's say for some
  499. 20:51use case you don't want to use TCP you
  500. 20:53want to use UDP changing or switching
  501. 20:56protocols with HTTP obviously it's not
  502. 20:58possible because HTTP runs on top of TCP
  503. 21:01But let's say for some requirement you
  504. 21:03wanted to switch to UDP for better
  505. 21:05performance and it was okay for you to
  506. 21:07lose out on some packets but you wanted
  507. 21:09performance out of your system. So then
  508. 21:11you would have to go for UDP but if you
  509. 21:13went for UDP uh rest over HTTP won't
  510. 21:16understand because HTTP only works on
  511. 21:18TCP. So which is where you might not be
  512. 21:22able to extract the best performance out
  513. 21:24of your system given your workload right
  514. 21:27it might not be like you always want UDP
  515. 21:29but for use case where you would want to
  516. 21:31switch protocol it does not give you
  517. 21:33that flexibility RPCs give you that
  518. 21:36flexibility so but obviously rest is
  519. 21:38widely adopted in most cases you would
  520. 21:40need it unless you are writing a very
  521. 21:41ultra low latency application but still
  522. 21:44having that flexibility of changing the
  523. 21:45underlying protocol is a pretty solid
  524. 21:48advantage that you'll
  525. 21:50Right. So using but obviously going
  526. 21:52through this downside does not really
  527. 21:54mean that we should not be using rest
  528. 21:55over HTTP. The entire internet is
  529. 21:56working on that and it is pretty pretty
  530. 21:59pretty solid very well tested all sorts
  531. 22:02of existing toolings works just fine
  532. 22:04with that. So unless you have a very
  533. 22:07specific requirement don't don't
  534. 22:09overthink too much. This was just uh my
  535. 22:13way of telling you hey grass is not
  536. 22:15always green. uh there are some
  537. 22:17limitations and you have to be aware of
  538. 22:19it whenever you are adopting something.
  539. 22:21So if you have very strict requirement
  540. 22:23around uh or not strict but other very
  541. 22:26specific requirement pick the right
  542. 22:28specification you go for RPC you go for
  543. 22:30rest it's up to you but it depends a lot
  544. 22:34on the SLS that you would want to
  545. 22:36guarantee or the kind of use case that
  546. 22:37you have at hand right so just be wary
  547. 22:40of the fact this was my way of listing
  548. 22:41down all the downsides that you have to
  549. 22:43be aware of while using uh rest over
  550. 22:46HTTP and yeah that's it that's it for
  551. 22:49this one I Hope you now you get an
  552. 22:52understanding of what REST is and what
  553. 22:54HTTP is and what and just a small
  554. 22:56glimpse of about RPCs. If you want if
  555. 22:58you are inclined into understanding more
  556. 23:00about RPCs, I already have a video on my
  557. 23:03channel. You can I would highly
  558. 23:04encourage you to check it out if you
  559. 23:06have any confusion around RPC that video
  560. 23:08would solve the problem for you or it
  561. 23:09would help you understand on what RPC is
  562. 23:12all about. But today we only talked
  563. 23:14about rest and uh how it is different
  564. 23:16from HTTP uh upsides of using it, how it
  565. 23:20gels so well with HTTP and the downsides
  566. 23:23of REST over HTTP so that we are all
  567. 23:25aware of uh what we have at hand. So
  568. 23:29yeah, that's it. That's it for this
  569. 23:31video. Again, if you guys like this
  570. 23:32video, give this video a thumbs up. If
  571. 23:34you guys like the channel, give this
  572. 23:36channel a sub. I post three in-depth
  573. 23:37engineering videos every week. And I'll
  574. 23:39see you in the next one. Thanks.

About this transcript

This page contains the full transcript of Everything you need to know about REST by Arpit Bhayani, generated from the public captions YouTube serves with the video. The transcript has 4,039 words across 574 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to choose a caption track available on the video.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, caption language selection, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.