Tech with Nader
Tech with Nader
  • 152
  • 867 830
DELETE Requests - Rest APIs In Depth
Let's learn about how the DELETE HTTP method works in the context of a REST API.
We start with an overview of what the DELETE request method is and how it relates to our API.
We then look at some visuals for how to think about the general flow of a DELETE request followed by some code that we write in Typescript and Deno to work through a practical example to delete a user from our file.
We wrap up the video by thinking about some considerations about DELETE requests when it comes to putting our API in to production and working on a project.
Chapters:
00:00 Introduction
01:33 DELETE Request Overview
03:47 DELETE Request Visual
05:20 DELETE Request Example
07:00 DELETE Request Code Example
29:55 DELETE Request Considerations
34:43 Next Steps
📦 Github Repository with the notes and exercise code+solutions: github.com/Nooder/rest-api-in-depth
💬 Come join us on Discord to chat with a like-minded community about tech and learning: discord.gg/K4nkugP7Gd
🏅Support the channel and content through Super Thanks, Channel Memberships, or on Patreon: www.patreon.com/TechWithNader
มุมมอง: 997

วีดีโอ

Exercises: PUT & PATCH Requests - Rest APIs In Depth
มุมมอง 4149 หลายเดือนก่อน
Let's go through some exercises to get some practice with PUT and PATCH Requests for Web APIs together, using Deno. We start with a warmup to look at the PUT and PATCH Request method types and log out the Request body. In the first exercise we look at a PUT request and how we can replace an existing resource on our server using its ID. Then, we look at the same exercise but with the addition of...
PUT & PATCH Requests - Rest APIs In Depth
มุมมอง 4199 หลายเดือนก่อน
Let's learn about how the PUT and PATCH HTTP methods work in the context of a REST API. We start with an overview of what a PUT and PATCH requests are and how they related to our API. We then compare and contrast PUT and PATCH requests with visual examples as well as in code using Deno. The main differentiator is that PUT requests replace a whole object, whereas PATCH requests allow us to do di...
Exercises: POST Requests - Rest APIs In Depth
มุมมอง 6749 หลายเดือนก่อน
Let's go through some exercises to get some practice with POST Requests for Web APIs together, using Deno. We start with a warmup to look at Request method types and send back an appropriate Response. In the first exercise we look at the main POST flow of creating a new resource using a JSON body and then adding it to our file on the backend in Deno. Then, in exercise 2 we take what we learned ...
POST Requests - Rest APIs In Depth
มุมมอง 4489 หลายเดือนก่อน
Let's learn about how the POST HTTP method works in the context of a REST API. We start with an overview of what a POST request is and how it related to our API. Then we get in to how we would use a POST request to create a new resource using our API in Deno. We go through parsing out different body types as well as how we'll eventually want to deal with data validation issues such as missing o...
Exercises: GET Requests - Rest APIs In Depth
มุมมอง 6589 หลายเดือนก่อน
Let's go through some exercises to get some practice with GET Requests for Web APIs together, using Deno. We start with a warmup to look at Request method types. Then, we look at how we can make a route to get all values of a specific resource, in this case movies. Then, in exercise 2 we look at how we can get a specific movie by an ID. We follow this up with looking at search/query parameters ...
GET Requests - Rest APIs In Depth
มุมมอง 1.4Kปีที่แล้ว
Let's learn about how the GET HTTP method works in the context of a REST API. We start with an overview of what a GET request is and how it related to our API. Then we get in to how we would get all of a specific resource through a route that we then build together in Deno. Following this, we look at how we'd get a single resource as well as the code for this in Deno as well. We then add how we...
Server Side Data Storage - Rest APIs In Depth
มุมมอง 846ปีที่แล้ว
Let's take a look at the various types of data storage options available to us on the server. We take a look at in memory storage as well as text file storage using JSON in both theory as well as code using Deno. Then, we discuss tradeoffs amongst these and other data storage tools and concepts like relational and object databases, key-value stores and others. We will be using in-memory and jso...
Exercises: Server Side Routing - Rest APIs In Depth
มุมมอง 826ปีที่แล้ว
Let's go through some exercises to get practice with Server Side Routing in Deno together, using web standard methods. We start with a warmup using simple if/else statements and the URL constructor to route incoming request pathnames. Then we move to using the URLPattern API to route incoming requests. In the second main exercise, we add some complexity to create even more dynamic routing patte...
Server Side Routing - Rest APIs In Depth
มุมมอง 804ปีที่แล้ว
Let's learn about some methods used to do server-side routing on the server in Deno together. We start with an overview of what server side routing is and why we'll need it in order to build our web server and REST API. Then, we go through the most common ways we'll encounter server-side routing. Starting with the simplest approach, we look at how we'd use conditional statements like if/else st...
Exercises: Simple Web Server - Rest APIs In Depth
มุมมอง 913ปีที่แล้ว
Let's go through some exercises to get practice setting up a web server in Deno together. We start with a simple 'hello world' server to get things warmed up. Then, we look at how we can dynamically respond with the request's method and url as well as add some logging to our server. For the second exercise we look at how we can send and format JSON responses. This is something we'll be doing a ...
Simple Web Server - Rest APIs In Depth
มุมมอง 1.6Kปีที่แล้ว
Let's start building our very first web server in Deno together! We start with an overview of what we're trying to build right before diving in to the code where we use the Deno.serve API to create our first server. We test out our server in Chrome and Insomnia and look at the HTTP Headers, as well as the Request and Response Objects in detail. To wrap thing up, we look at the different MIME Ty...
HTTP Headers & Methods - Rest APIs In Depth
มุมมอง 3.1Kปีที่แล้ว
Let's take a look at HTTP Headers together and look at some practical examples in Insomnia and Deno. We start with an overview of what HTTP Headers are as well as some visuals and examples using both Chrome and Insomnia to inspect them. Then, we look at the different HTTP Methods such as GET, POST, PUT/PATCH, DELETE as well as the less known ones such as HEAD and OPTIONS. We then look at the HT...
Network Protocols - Rest APIs In Depth
มุมมอง 1.8Kปีที่แล้ว
Let's learn about the main network protocols we will be seeing and using as we start working with REST APIs. We start by looking at the OSI model and its 7 layers and how things are laid out for a nice mental model of how to think about protocols and the network stack. Then, we take a look at HTTP and HTTPS and the different versions. We compare HTTP 1.1 to HTTP2 and see that HTTPS is HTTP over...
DNS, IP Addresses & Ports - Rest APIs In Depth
มุมมอง 2Kปีที่แล้ว
Let's learn how DNS, IP Addresses and Ports work in the context of networking so we can better prepare for working with REST APIs. We start by looking at the URL structure and how it allows us to request information from a particular resource on a network in a structured way. Then, we look at the domain name system which translates domain names to ip addresses for the computer. We then use thes...
Deno Environment Setup - Rest APIs In Depth
มุมมอง 2Kปีที่แล้ว
Deno Environment Setup - Rest APIs In Depth
Introduction to REST APIs - Rest APIs In Depth
มุมมอง 5Kปีที่แล้ว
Introduction to REST APIs - Rest APIs In Depth
Project: React Router - React In Depth
มุมมอง 2.2Kปีที่แล้ว
Project: React Router - React In Depth
Exercises: Custom Hooks - React In Depth
มุมมอง 1.3Kปีที่แล้ว
Exercises: Custom Hooks - React In Depth
Custom Hooks - React In Depth
มุมมอง 1.2Kปีที่แล้ว
Custom Hooks - React In Depth
Exercises: Data Fetching - React In Depth
มุมมอง 1.3Kปีที่แล้ว
Exercises: Data Fetching - React In Depth
Data Fetching - React In Depth
มุมมอง 1.1Kปีที่แล้ว
Data Fetching - React In Depth
Exercises: Conditional Rendering - React In Depth
มุมมอง 595ปีที่แล้ว
Exercises: Conditional Rendering - React In Depth
Conditional Rendering - React In Depth
มุมมอง 808ปีที่แล้ว
Conditional Rendering - React In Depth
Exercises: useContext Hook - React In Depth
มุมมอง 994ปีที่แล้ว
Exercises: useContext Hook - React In Depth
useContext Hook - React In Depth
มุมมอง 1.5Kปีที่แล้ว
useContext Hook - React In Depth
Mock System Design Interview - Junior Level
มุมมอง 2.1Kปีที่แล้ว
Mock System Design Interview - Junior Level
Exercises: useReducer Hook - React In Depth
มุมมอง 1.6Kปีที่แล้ว
Exercises: useReducer Hook - React In Depth
useReducer Hook - React In Depth
มุมมอง 1.7Kปีที่แล้ว
useReducer Hook - React In Depth
Exercises: useRef Hook - React In Depth
มุมมอง 1.3Kปีที่แล้ว
Exercises: useRef Hook - React In Depth

ความคิดเห็น

  • @TheHarist28
    @TheHarist28 19 ชั่วโมงที่ผ่านมา

    as always you are incredible

  • @PLanz-d2e
    @PLanz-d2e 2 วันที่ผ่านมา

    Thank you, sir !! Im a freshman from philippines self studying js and this really helped me a lot ❤

  • @Kerwell
    @Kerwell 5 วันที่ผ่านมา

    wow bonus exercise was awesome to figure out. taught me how anonymous functions work here, still wrapping my head around it even though i know how it works, it just blows my mind! also didn't know map had a second argument class FancyArray extends Array { mapWithLogging(callback) { const newArray = new FancyArray(); for (let i = 0; i < this.length; i++) { newArray.push(callback(this[i], i, this)); console.log(`Current: ${this[i]} After Callback: ${newArray[i]}`); } return newArray; } } const arr = new FancyArray(); console.log(arr); arr.push(1); arr.push(2); arr.push(3); // console.log(arr); const mapped = arr.mapWithLogging((item, i) => { return item + i; }); console.log(mapped);

  • @Kerwell
    @Kerwell 7 วันที่ผ่านมา

    loved exercise 3, it was made SOOOOO well to really understand what's happening behind the veil you have so much passion in both programming and teaching which shows so much in your exercises and explanations. ugh can't get enough

  • @Kerwell
    @Kerwell 8 วันที่ผ่านมา

    100% extremely clear, love this

  • @Kerwell
    @Kerwell 8 วันที่ผ่านมา

    god i love this series. you're such an amazing teacher, this is so exciting

  • @Kerwell
    @Kerwell 8 วันที่ผ่านมา

    wasn't hard, but i was stuck on ex 3 for a bit because my dumbass forgot to await LOL it's always "how do you test your code" but they never ask how my code tests me smh

  • @rahulkeshetty6180
    @rahulkeshetty6180 9 วันที่ผ่านมา

    Hey Nadar your promises was amazing, can you reply to this comment the extensions you are using for the cursive text in your code and the animation in your typing cursor

  • @Kerwell
    @Kerwell 9 วันที่ผ่านมา

    i didn't even really think this was something you had to wrap your mind around, unless I'm being naive, but I always assumed it worked this way haha

  • @Kerwell
    @Kerwell 10 วันที่ผ่านมา

    i think the hardest thing about recursion is the mentality you have to adopt. Took me 2 days and fully gave up on bonus exercise. It makes sense in retrospect, but it takes me a really long time to think in recursion. ex1. const palindrome = (string) => { if (string.length === 0) return false; if (string.length === 1) return true; if (string[0] === string[1]) return true; if (string[0] !== string[string.length - 1]) return false; if (string[0] === string[string.length - 1]) { let arr = string.split(""); // convert string to array arr.pop(); arr.shift(); string = arr.join(""); return palindrome(string); } }; ex2. this one was no joke, i just assume we couldn't use any loops until I saw how you solved it lol... const flatten = (array) => { if (array.length === 0) { return array; } if (Array.isArray(array[0])) { array.splice(0, 1, ...array[0]); return flatten(array); } return [array[0], ...flatten(array.slice(1))]; }; ex3. const flatten = (object) => { let flattened = {}; for (const [key, value] of Object.entries(object)) { if (typeof value === "object") { flattened = { ...object[key] }; delete object[key]; return flatten((flattened = { ...object, ...flattened })); } } return object; }; I fully gave up on bonus exercise. It was easy in retrospect, but it's really hard for me to adopt the thought process.

  • @kianaparsi8223
    @kianaparsi8223 10 วันที่ผ่านมา

    Omg, you talk soooo much😊, just go ahead and show the content for god sake

  • @abdessamadeallay7841
    @abdessamadeallay7841 10 วันที่ผ่านมา

    Hey nader ,I found your explanation vey clear, could u please explain useMemo,callback ?

  • @Solsenderz
    @Solsenderz 10 วันที่ผ่านมา

    Thanks for the explanation.

  • @casualgamingz153
    @casualgamingz153 10 วันที่ผ่านมา

    in exercise 3 i found that the best was to search first and then ask questions :D, well I was right, foundout that you can specify the number of occurrences with {}'s, my solution was const phonePattern = /^[\d]{3}-[\d]{3}-[\d]{4}$/

  • @senirudinil
    @senirudinil 11 วันที่ผ่านมา

    thanks nader

  • @Kerwell
    @Kerwell 12 วันที่ผ่านมา

    took me a bit to understand it and i think this is a really good way to look at the recursion array and even the binary tree 1 + (1+(2+(3+(4+(5+(6))))

  • @senirudinil
    @senirudinil 12 วันที่ผ่านมา

    thank you nader

  • @Kerwell
    @Kerwell 13 วันที่ผ่านมา

    WHEWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW I DID ITTTTTT holy moly, was this so satisfying to complete man, omg. it was interesting to see how we both went through it, i first started with the fetching because i was comfortable doing it as we've done it already, then i went with inquirer and i actually ended up watching a little on how to use path. but everything else i figured it out. god that was fun.

  • @kopilkaiser8991
    @kopilkaiser8991 14 วันที่ผ่านมา

    Great video to help us get first hand experience on programming interview. Thank you for uploading such great content 😊

  • @TheHarist28
    @TheHarist28 14 วันที่ผ่านมา

    i would like to comment to all of your videos, you are amazing, you explain everything sooooo well !! Proud of you really !!!!!

  • @meichi308
    @meichi308 17 วันที่ผ่านมา

    This is amazing! thank you! I do not have computer science background but this is super clear and easy to understand. I like that you breakdown each concept to the smallest bit and explain their connections. This helps so much!!!

  • @arfatkazi-h8q
    @arfatkazi-h8q 17 วันที่ผ่านมา

    best video best playlist good work brother😍😍😍😍

  • @shaurya1810
    @shaurya1810 18 วันที่ผ่านมา

    ex1 --- - var loggedIn = false; let i = 0; while(loggedIn==false){ console.log("incorrect login credentials"); i++; if(i==3){ loggedIn= true console.log("successfully logged in") }

  • @Kerwell
    @Kerwell 19 วันที่ผ่านมา

    ex 3 stumped me longer than expected, but i got through it looking around. the hardest thing was not really knowing what i was looking for, but as i got some inklings and matching names, got it together. also you simulating the struggle is so nice to assure that its expected to be like this sometimes

  • @fardeenzaman9807
    @fardeenzaman9807 19 วันที่ผ่านมา

    The way you explain and practically show with exercises, your playlist should be at the top of the search list. Thank you so much for taking the time to teach us, sir.

  • @najibzuse4532
    @najibzuse4532 20 วันที่ผ่านมา

    one thing about exrc3 Boolean(cool) its always gonna give value of true even if cool = "false" to solve that problem use JSON.parse(cool)

  • @Kerwell
    @Kerwell 21 วันที่ผ่านมา

    im happy if these are considered challenging because im still solving them without help. i'd say keep them this level!

  • @jelanah_
    @jelanah_ 21 วันที่ผ่านมา

    thank you!

  • @Kerwell
    @Kerwell 21 วันที่ผ่านมา

    was stuck a little on the third one. I found that I was already comfortable not using "let" to initialize my for loops. Instead of splice, I actuallty was using filter and then updating the original array with the shallow copy. while it was working, i found using splice better after i completed the exercise. sometimes it feels like i have so many different options that i just go with what i think of immediately or at least works to get the result i want.

  • @ckw3005
    @ckw3005 22 วันที่ผ่านมา

    best explaination on the youtube👍👍

  • @ArfatKazi-h2z
    @ArfatKazi-h2z 23 วันที่ผ่านมา

    My brother Nader you are awesome 🥰🥰🥰😘😘😘

  • @Redford-io1gh
    @Redford-io1gh 23 วันที่ผ่านมา

    they are both very very weak

  • @Kerwell
    @Kerwell 24 วันที่ผ่านมา

    it seems simple, yet open ended in complexity. very interesting and eager to do the exercises

  • @Kerwell
    @Kerwell 25 วันที่ผ่านมา

    doesn't seem too hard, but curious why I would want to use this over if/else. 47/81. excited as i am nervous for the next project haha

  • @journeyofc6200
    @journeyofc6200 29 วันที่ผ่านมา

    I saw this is nodejs stream docs

  • @uuuppz
    @uuuppz 29 วันที่ผ่านมา

    haha he's making a simple question complicated. 🤣

  • @think4ai
    @think4ai หลายเดือนก่อน

    My favorite teacher so far!

  • @MyPukeko
    @MyPukeko หลายเดือนก่อน

    Awesome! Thanks Nader

  • @Kerwell
    @Kerwell หลายเดือนก่อน

    Just want to add my solution to exercise 3 to the ecosystem for future devs. But not before I again thank you for this series, it has infinitely made my fundamentals better and decreased coding anxiety. What a time to be alive. let number = 1337; // random integer from 0 max as a reusable function const myRandomInt = (max) => { return Math.floor(Math.random() * max + 1); }; /* remember that even if you can't access what is in the try block, if the local scope alters something that already exists globally or share the same parent scope, you can still access it from catch block */ try { console.log("Number initialized at: ", number); //gets random new number, adds and redefines 'number' variable number += myRandomInt(1000); console.log("Number updated to random number: ", number); if (number < 2000) { // exits try block after failing throw new Error("You lose!"); } else { console.log("You win!"); } } catch (error) { console.error(error); console.error("Oof.... Number was too low: ", number); }

  • @YonasGetaneh-w2e
    @YonasGetaneh-w2e หลายเดือนก่อน

    thanks

  • @AnkitPatel04
    @AnkitPatel04 หลายเดือนก่อน

    i watch this video 10 times untill i uderstand "undefined+!" is not function 😅

  • @MyPukeko
    @MyPukeko หลายเดือนก่อน

    Thanks Nader, excellent video!

  • @Kerwell
    @Kerwell หลายเดือนก่อน

    Wow, ngl this was kind of tough. part of it was trying to find the best approach, switching approaches, but I eventually did it on my own. Fantastic fundamentals flexor

  • @kerimagayev7330
    @kerimagayev7330 หลายเดือนก่อน

    thanks

  • @casualgamingz153
    @casualgamingz153 หลายเดือนก่อน

    youtube does not deserve this man, providing premium quality course

  • @sportstv9104
    @sportstv9104 หลายเดือนก่อน

    Keep going

  • @sportstv9104
    @sportstv9104 หลายเดือนก่อน

    Man you are really the best keep it up please

  • @kerimagayev7330
    @kerimagayev7330 หลายเดือนก่อน

    You prepare the best lessons I have ever seen. Will there be next js lessons?

  • @kerimagayev7330
    @kerimagayev7330 หลายเดือนก่อน

    thanks, Will there be a next js course???

  • @agrimgupta0805
    @agrimgupta0805 หลายเดือนก่อน

    You are very amazing, hoping great success for you ❤🎉