How to build a REST API with Node js & Express
HTML-код
- Опубликовано: 14 июн 2024
- Learn to build a REST API with Node js & Express in just 1 hour!
🔥Get the complete Node course: bit.ly/2NfkpOC
Subscribe for more videos:
/ @programmingwithmosh
Want to learn more from me? Check out my blog and courses:
Courses: codewithmosh.com
Blog: programmingwithmosh.com
Facebook: / programmingwithmosh
Twitter: / moshhamedani
TABLE OF CONTENT:
00:49 What are RESTful APIs
06:48 Introducing Express
09:09 Your First Web Server
14:57 Nodemon
16:29 Environment Variables
19:44 Route Parameters
25:22 Handling HTTP GET Requests
30:09 Handling HTTP POST Requests
33:53 Calling APIs using Postman
36:03 Input Validation
44:03 Handling HTTP PUT Requests
52:33 Handling HTTP DELETE Requests
I've been learning web development for over a year, and I've never seen such amazing, organized, coherent courses like yours! Thanks Mosh!
so true
Knew most of this, but I still watched the entire tutorial because it was so incredibly well structured and didactic.
You are a born teacher. I've often fantasized about making great and clear youtube tutorials, in my wildest most perfect fantasies, they looked exactly like the stuff you actually make! Incredible!
I agree. Really entertaining videos
This is the clearest, most elegant tutorial of Express JS basics. Amazing since it was uploaded two years ago. Thanks, Mosh.
Agreed!!
Ya but advance topics r wery little
I was struggling learning how to create a server with node and express. This tutorial is really easy to understand and well-structured for beginners. This is so far the best tutorial on RUclips!!! Thank you so much, Mosh!!!
Great content! Very clear, well explained, with the perfect balance between simplicity and depth. Fantastic job!
Very much dug and appreciated this tutorial. Where as a couple of others I 'learned' things, here I started to actually understand them. That's quite a bit more satisfying!
Thank you for your tutorial..
As a starter in Node, I found this really helpful
Well structured explanation and good flow for a starter
Now I could understand the basic of Node..
Man! this for far one of the best well explained Node+Express crash courses I've ever seen. You convinced me to buy the full series :)
Mosh, your teaching style is so clear. Thank you for the courses!
If you meet the validation error, you have to do some changes to be according with your Joi version.
With my Joi version: joi@17.6.0, the next changes worked:
const schema = Joi.object({
name: Joi.string()
.min(3)
.max(30)
.required()
});
const result = schema.validate(req.body);
console.log(result);
Thanks bro it really help.🙏
Great tutorial. I had just finished the express course on codecademy and was still really confused. Watching this gave me a much better understanding and explanation of the why and how of building endpoints with express on your actual computer. I'll definitely be checking out your courses and your other videos.
I've been a c# dev for about 7 years and wanted to learn new technologies like nodejs and this video is great to start with. Thanks Mosh
Today was a lucky day I got the right tutorial on right time on RUclips
Massive thanks. This helped me a lot.
You are the light of my life! You are a hidden diamond in youtube! I really don't know how a person could be so good at explaining things and make it accessible to all !! Thanks a lot for help.
such a great tutorial i had seen ever. Thanks for great organised and to the point video.
ur style of explaining things in this tutorial is very good. 👍 I'm lucky to watching this tutorial
Hi Mosh, this is so great. You explain it in detail yet clearly understandable. Awesome.
Mosh you are the man I learned this in my full-stack boot-camp, but didn't fully understand it. Your example was clear concise and helped me understand it better.
Very good tutorial Mr. Mosh..Things are organised very well...Nothing is more or less..Good effort....Thank u...
Awesome tutorial MOSH!
You made me feel at ease with learning new powerful frameworks which I was really scared of....thank you so much....
I appreciated a lot this free one hour tutorial, I already finish it and I bougth already right now!, I hope the full course is ok and updated!... If you guys want to learn dont hesitate ... watch this video of one hour and when you finish , you'll be more skilled than the before you watched this free course of one hour!.
41:17 from v17 of the joi package, here's the updated code of the post route
const schema = Joi.object({
name: Joi.string().min(6).required()
});
const result = schema.validate(req.body);
console.log(result);
Hi, I am using Joi version 17 too. I have problem because Joi.validate or Joi.Object are not recognized functions. Could you help or explain a little bit more?
function validateCourse(course){
const schema = Joi.Object({
name: Joi.string().min(3).required()
});
return schema.validate(req.body);
}
I have solved the problem. I have to use Joi.object and correct parameter. It is working now. Thank you.
function validateCourse(course){
const schema = Joi.object({
name: Joi.string().min(3).required()
});
return schema.validate(course);
}
Thank you, Niharika!!!!
im not sure if i understood but can i just do validation from client side¿
Very professional teaching..
Moish, you are bomba.
*Mosh
*Moisht
Moist
Momo
*Moishy
You should make a video teaching how to integrate nodejs and angular features. Your way to teach is unique!
Thanks Mosh for this excellent video. Could not have got a simpler way of beginning with Node.
Your tutorials are so clear. Can't thank you enough!
I bought your angular course on udemy and that was too good having right content in minimal time. This video about nodejs is awesome thanks mosh
What a great tutorial! Keep up the good work.
Another excellent course by Mosh: clear, to the point, practical. Not a waste of time. Thx!
Wow, thank you Mosh. This is the clearest, most detailed explanation I have come across. This helped me so much and I thank you so much. Going to get your course now as I love your teaching. Spot on
00:49 What are RESTful APIs
06:48 Introducing Express
09:09 Your First Web Server
14:57 Nodemon
16:29 Environment Variables
19:44 Route Parameters
25:22 Handling HTTP GET Requests
30:09 Handling HTTP POST Requests
33:53 Calling APIs using Postman
36:03 Input Validation
44:03 Handling HTTP PUT Requests
52:33 Handling HTTP DELETE Requests
thank you so much
@@tekz541 you blind this is in the description
@@r_lonef ahhh, im was not reading the description
@@tekz541 programmers always should if they need something :)
19:14 below commands for windows, these are case sensitive so use exact VARIABLE name
For Command Prompt: set PORT=5000
For Power Shell: $env:port=5000
For Bash (Windows): export PORT=5000
Thank you sir for your wonderful course on CRUD. Loved it and its the perfect teaching :)
Excellent video. Very well structured. thanks
As Mosh wisely said to use that specific version of Joi it will work but note that in the current version of Joi you have to make the schema a Joi.object and then at 40:54 validate the schema rather than validate Joi e.g. schema.validate(req.body).
In one sentence , This lecture is awesome Mr. Mosh. thanks.
Thanks Mosh, for explaining concepts so easily and clearly with examples.
Thanks a lot, Mosh. I learned a lot. I'm probably going to buy the full course, man!
Oh mosh this is a great tutorial the exact thing I WANTED TO learn,perfect for those who want to learn How backend stuffs work
How can I take course in udemy
@@harishpaudel7670 by spending money
@@harishpaudel7670 my opinion would be to take Mosh's instead.
Thank you Mosh, this is a great tutorial; so many node concepts in one lesson and presented in a straightforward way.
It's really amazing what you are teaching Mosh. Your methods, content and video production are all perfect. I wish you all the best!
Explained everything very beautifully ,simply,precisely. Wow!!!!!!!!!!!
At 41:00, if using Joi v17, Joi.validate() no longer works. Instead your schema object should be
const schema = Joi.object({ name: Joi.string() });
Then use
const result = schema.validate(req.body);
This has to be the easiest tutorial on the subject. The others I've found do too much. Thank you, sir.
all of your tutorials are awesome, easy to understand, interesting, and very helpful for a beginner student
Mosh, such a clear and fully comprehensive tutorial. Very professional video. I will get the course straight away.
A few notes for everybody watching in 2021:
// On windows you set environment variables like this:
set "$Env:PORT = 5000"
//(or maybe without the "" )
// Joi Validation method has changed! it's now like this:
const schema = Joi.object({
name: Joi.string().min(3).required(),
});
const result = schema.validate(req.body);
console.log(result);
You're a savior. Thanks!
For me, it's still listening to Port 3000... is there any other way to solve this?
@@shivaniganji4300 Yeah, just set PORT=5000. don't put any space between the PORT, the equality sign and the 5000.
Excellent, thank you very Mosh.
I laughed out loud.
I Love both the coding and presentation style, thanks a bunch Mosh :)
Thanks Mosh, that gave me clear understand of express
Awesome,Please upload more videos on building api
You can find all of this here: www.udemy.com/user/moshfeghhamedani/
For those who missed it in the comment below, Joi has changed. This worked for me:
const schema = Joi.object({
name: Joi.string().min(3).required()
});
const result = schema.validate(req.body);
console.log(result);
if (result.error){
res.status(400).send(result.error)
}
can we find a way to pin this to the top? I almost gave up because of this part
if we install joi in the way it shows in the video. we wouldn't need this.
@@shanthuog2589 yea lets just not use the updated version of JOI makes sense
thanks for this .
Looking forward to watch this video this weekend. Thanks!
This contest is terrific Mosh. Easy to understand and clear explanations. I also enjoyed the other NodeJS videos.
I bought your Angular course on Udemy and I saw you had a RUclips! Very cool!
Program With Erik me too. 😁
How is it?
Thank you .. You are the best tutor..... FYI , Joy Validate has made change in 2021, i use this code to resolve my problem of "Joi.validate is not a function".
app.post('/api/courses', (req,res) => {
const schema = Joi.object({
name: Joi.string().min(3).required()
});
const result = schema.validate(req.body);
console.log(result);
good friend
Seriously well-crafted, thanks!
Fantastic tutorial. A great introduction into REST APIs, coming from someone who has never really messed with them before. Definitely buying this course.
It's scary seeing that someone knew about this four years ago
Same bro same
This guy knew everything a long time ago, c++, c#, java, JavaScript, python, PHP et cetera. He knows everything in-depth, he is like a super tech master of all genius.
🤣🤣🤣😂😂😂
Lmao,
😂😂😂
00:00 - Intro
00:50 - Restful services
06:50 - Introducing Express
09:10 - Your First Web Server
14:58 - Nodemon
16:30 - Environment Variables
19:45 - Route Parameters
23:07 - autopromo
25:25 - Handling GET Requests
30:10 - Handling POST Requests
44:03 - Handling PUT Requests
52:36 - Handling DELETE Requests
55:25 - Fixing a bug
57:25 - Project
If you could add this to your description would be cool for new viewers :)
@@clementita54 bump
This is absolutely great, thank you Mosh.
Thanks a lot Mosh. A very good video, well explained and built. I was just looking for something like this
would recommend you to create a GitHub repository so that we don't have to pause the video to write code and run it every time.
How do you know what will be returned from the request " require("module_name") " .
For example you said require("express") returns a function and require("joi") returns a class. I am wondering where i can find those information.
Excellent question! You'd have to either look at the documentation for the module or explore it yourself, and the easiest way to do that is to run node interactively. Just run node without arguments from the command line, type in the require statement for the module and hit enter. If we're nitpicking, require("joi") returns doesn't return a class but rather an object of the class that it defines.
nice teacher, nice tutorial :) totally worth my time.. thanks!
Amazing tutorial, explained everything easily and all my concepts got cleared out.Thank you Sir.
in powershell to set port variable: $env:PORT = 5000
Thanks man, what a savior ...
thanks man, appreciate you
Thanks man
setx PORT 5000
Can u upload it in Udemy ?
thankyou mosh , I have been watching API building videos but I had always stuck at routes topic
but watching your video I not only have cleared my doubt but also acquired good knowledge
Incredible tutorial!! Thank you Mosh :)
I can't get the PORT environment variable to work on Windows 10... What am I doign wrong?
I've tried git bash, powershell and going through the system properties.
I've tried $env:PORT, export PORT, set PORT, PORT...
Also for some reasons I couldn't get the PUT and DELETE requests to work.
You can use cross-env. It will let you use environment variables across platforms. Accessing process environment variables is always a problem in windows machines.
You can simple install it by running the command-
npm I cross-env -D
Then go to your package.json file inside scripts section you will see the start command, simple replace it with
"cross-env PORT=3000 npm start"
(Just prepend cross-env before the star command)
Regarding you your second query it may be some problem with the routing.
Happy coding
If anyone was struggle like I was since Joi has been deprecated here's my solution
The way I got it to work was first const Joi = require('@hapi/joi');
The way I defined the schema was const schema = Joi.object({ name: Joi.string().min(3).required() })
The way I got it to validate const result = schema.validate(req.body)
thank you! I just had missed a little thing but I managed to make it work now :)
I stumbled across this. Can confirm this as working in version 17.1.0.
I would highly recommend that if you are using VS Code make sure your intellisense is working. You will see that validate() takes two arguments *value: any* and an optional argument *options?: Joi.ValidationOptions*.
code with mosh you are the boss.... love your tutorials it clear my all doubt of route handing
Awesome Mosh, i like your way you explaining the code and much clarity is their in your lecture
Helpful tip: for setting the environment variable in the "PORT" example, "set PORT=5000" may not work in Windows. $env:PORT = 5000 worked for me instead.
Thank You!!
Thanks bud
Okay why at 47:27 gets the whole courses updated when we only have the "course" which we extracted from the courses with the find function
Edit: solved
Don't ever just edit some problem you've posted about to say "solved." Share what the solution was so that others who are experiencing the same issue can learn from your question.
It's because of JS nature - whenever you assign some existing object/array to some variable, you actually get the reference to that object/array (not its copy)
Check it out yourself in the console
let obj1 = {a: 1}
let obj2 = obj1
obj2.a = 4
console.log(obj1.a) // 4
That's because it's the same object
console.log(obj1 === obj2)
Ahh - and also notice that
{a: 1} === {a: 1} // false
That's because of how JS checks equality of objects
@@rafagawlikowski9267 Thanks for taking the time to type this out and explain
A very clear tutorial on building APIs with Node and Express. The best tutorial on the subject. Thanks, Mosh
{2021-08-14}, {2023-12-15}
Great Tutorial! highly recommended. Thanks Mosh :)
joi is deprecated, express-validator is an alternative that can be used now.
No, it's just been moved here: hapijs.com/tutorials/validation. If you would've read the page, it says "This module has moved and is now available at @hapi/joi. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues."
There is an issue with your PUT request logic. Let me give you an example. You have the course id's [1, 2, 3]. Then you delete [1]. So you have [2, 3] with length 2. Your PUT assigns the id (length + 1) which is equal to (3), so now you have the course id's [2, 3, 3] so you also need a validiateCourseID() function in order to ensure you don't have duplicate course id's because when calling a GET request on id=3 you will get duplicate results.
Programming with Mosh alright that makes sense. It's just that you taught the course as if we have prior JavaScript knowledge, and hopefully any programmer would have been able to catch a fatal error such as that. Because that would allow you to have lots of duplicate id's.
could just use --> id: courses[courses.length-1].id +1
let maxId = 1;
if (courses.length > 0) {
maxId = courses.reduce((max, c) => c.id > max ? c.id : max, courses[0].id) + 1;
}
simple, straightforward, excellent !!!!!!
Thank u mosh! Really great tutorial. It helped me a lot.
"And I know this probably doesn't make any sense to you...
...because it was introduced by a *p h p s t u d e n t* "
I DIED XD
"PhD student as part of his thesis", not PHP
When someone loves you, the way they talk about you is different. You feel safe and comfortable.
So
Your videos helped me expand my knowledge thank you so much for your interest in teaching what you have learnt in a very clear & precise manner. Appreciate it!
You rock! I wonder why haven't I found your channel 'till now. tnx for your spectacular tutorials
How to get and post real data is not shown. This video is not worth watching for an hour.
For that u have to pay...
such a great tutorial i have ever watched. Thanks a ton.
Thanks a lot Mosh, this class was sublime.
I'm buying your full course after watching this. Legendary stuff.
Very helpful, and detail. Thank you.
This guy is awesome. This is such an amazing job! Thanks.
This is great! Nicely explained. There are tons of those tutorials in which they just do tons of stuff while telling that they do all this stuff but NOT telling WHY.
Awesome video! Thanks and congrats, Mosh!!
Thank you so much .. Most informative things learned in just one hour
I love this lecture, your speaking manner, pace and explanations are ideal. Not too much detail but just enough. Background music also helps with concentration.
Excellent tutorial. This is a great intro. Thank you
Thanks for explaining. It's getting so easy to understand Expressjs.
Its first time I completed the one-hour tutorial. Great explanation sir. Thank you :)