اولین API خود را با Node.js بسازید: راهنمای گام به گام

سلام من هستم سابهام میتی، یک مهندس نرم افزار همچنین از آموزش کدنویسی به دیگران از طریق آموزش هایم لذت می برم. من همیشه مشتاق یادگیری چیزهای جدید و به اشتراک گذاشتن دانش خود با جامعه هستم.
⚡ اخیراً مقاله ای در مورد آن نوشتم اولین API خود را بسازید و خواستم آن را با همه شما به اشتراک بگذارم. می توانید مقاله را در وب سایت من پیدا کنید https://codexam.vercel.app/docs/node/node1 [Better View]
⚡ من همچنین یک مخزن در GitHub دارم که در آن می توانید تمام کدها و پروژه های مرتبط با این موضوع را پیدا کنید. می توانید مخزن را در https://github.com/Subham-Maity/node-js-full-stack-tutorial بیابید
❗ برای نگاهی عمیق تر به این موضوع، از جمله فهرست مطالب مفصل، آموزش کامل را در GitHub Repo من بررسی کنید.
اگر میخواهید از آخرین پروژهها و مقالات من بهروز باشید، میتوانید من را دنبال کنید:
- ما قبلاً می دانیم که چگونه یک سرور ساده بسازیم. می توانید آن را در فصل قبل بررسی کنید
const http = require('http');
http.createServer((req, res) => {
}
).listen(5000);
- اکنون
res.writeHead(200, {'Content-Type': 'application/json'});
– این خط کد وضعیت پاسخ و هدرها را با استفاده ازwriteHead
روش ازres
(پاسخ) شیء
writeHead
متد دو آرگومان می گیرد، اولی کد وضعیت و دومی یک شی حاوی هدرهای پاسخ است (در این مورد، ما در حال تنظیمContent-Type
سربرگ بهapplication/json
)این
writeHead
روش برای ارسال کد وضعیت پاسخ و هدرها به مشتری استفاده می شودکد وضعیت
200
یک کد وضعیت استاندارد HTTP است که نشان می دهد درخواست موفقیت آمیز بوده است.این
Content-Type
هدر برای تعیین نوع رسانه منبع ارسال شده در بدنه پاسخ استفاده می شود، به این معنی که مشتری می تواند انتظار دریافت داده ها را در قالب خاصی داشته باشد.
application/json
، نشان می دهد که بدنه پاسخ حاوی داده هایی با فرمت JSON است و ما استفاده می کنیم/
برای تفکیک نوع و نوع فرعی نوع رسانه.
- اکنون
res.write(JSON.stringify({name: 'Subham', age: 20}));
– این خط بدنه پاسخ را با استفاده از عبارت می نویسدwrite
روش ازres
(پاسخ) شیء
این
write
روش برای ارسال بدنه پاسخ به مشتری استفاده می شود به این معنی که مشتری می تواند انتظار دریافت داده ها را در یک قالب خاص داشته باشد.این
JSON.stringify
متد برای تبدیل شی جاوا اسکریپت به رشته JSON استفاده می شوددر این مورد، یک نمایش JSON از یک شی با ویژگی ها ارسال می کند
name
وage
.این
JSON.stringify
متد یک آرگومان واحد می گیرد، شیئی که باید به رشته JSON تبدیل شود
- اکنون
res.end();
– این خط پایان پاسخ را نشان می دهد و با استفاده از آن برای مشتری ارسال می کندend
روش ازres
(پاسخ) شیء.
- این
end
این روش برای نشان دادن اینکه تمام سرصفحه ها و بدنه پاسخ ارسال شده اند و سرور باید این پیام را کامل در نظر بگیرد استفاده می شود.این خطوط کد بخشی از سرور Node.js هستند که پاسخی به درخواست HTTP می فرستند. این
writeHead
روش برای تنظیم کد وضعیت پاسخ و هدرها استفاده می شود. در این حالت کد وضعیت روی تنظیم می شود200
برای نشان دادن موفقیت، وContent-Type
سربرگ تنظیم شده استapplication/json
برای نشان دادن اینکه پاسخ حاوی داده های JSON خواهد بود. اینwrite
روش برای ارسال داده در بدنه پاسخ استفاده می شود. در این مورد، یک نمایش JSON از یک شی با ویژگی ها ارسال می کندname
وage
. در نهایت،end
روش برای علامت دادن پایان پاسخ و ارسال آن به مشتری استفاده می شود.
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'application/json'});
res.write(JSON.stringify({name: 'Subham', age: 20}));
res.end();
}
).listen(5000);
-
اکنون می توانیم این سرور را با استفاده از آن اجرا کنیم
nodemon server.js
و با استفاده از مرورگر آن را بررسی کنیدlocalhost:5000
-
حالا می توانیم خروجی را در مرورگر به این صورت ببینیم
{
"name": "Subham",
"age": 20
}
همچنین میتوانید آن را در پستچی که قبلاً در این بخش پروژه در اینجا در مورد آن صحبت کردیم، بررسی کنید
📝 داده ها را با استفاده از data.js جدا کنید
- یک فایل جدید ایجاد کنید
data.js
و این کد را اضافه کنید
const data ={
"name":"Rajesh",
"age": 20,
"email": "rajesh@dev.com"
}
module.exports=data;
- اینجا
const data
متغیری است که حاوی یک شی با مقداری داده است-
name
یک ویژگی شی است و مقدار آن استRajesh
-
age
یک ویژگی شی است و مقدار آن است20
-
email
یک خاصیت شی است و مقدار آن `
-
-
module.exports=data
برای صادرات متغیر داده استفاده می شود تا بتوان از آن در فایل های دیگر استفاده کرد
- اکنون میتوانیم این دادهها را وارد کنید
server.js
فایل با استفاده ازrequire
روش
const data = require('./data');
- Now pass the data variable in the
write
روش ازres
شی داخلJSON.stringify
روشی مثل این
res.write(JSON.stringify(data));
-
Now we can run this server using
nodemon server.js
و با استفاده از مرورگر آن را بررسی کنیدlocalhost:5000
-
حالا می توانیم خروجی را در مرورگر به این صورت ببینیم
{"name":"Rajesh","age":20,"email":"rajesh@dev.com"}
📝 Add more data in the data.js file
- Now we can add more data in the
data.js
فایل اینجوری
`js
const data = [
{
name: “Rajesh”,
age: 20,
address: {
city: “Delhi”,
state: “Delhi”,
country: “India”,
},
hobbies: [“coding”, “reading”, “playing”],
skills: [“html”, “css”, “js”, “nodejs”],
education: {
school: “Delhi Public School”,
college: “Delhi University”,
degree: “B.Tech”,
},
projects: {
project1: “Portfolio”,
project2: “Blog”,
project3: “E-commerce”,
},
social: {
github: “rajesh.github.io”,
linkedin: “rajesh.linkedin.com”,
twitter: “rajesh.twitter.com”,
},
work: {
company: “XYZ”,
position: “Software Engineer”,
experience: “2 years”,
},
achievements: {
achievement1: “Won a hackathon”,
achievement2: “Got a scholarship”,
achievement3: “Got a job”,
},
interests: {
interest1: “Reading”,
interest2: “Playing”,
interest3: “Coding”,
},
languages: {
language1: “English”,
language2: “Hindi”,
language3: “Punjabi”,
},
contact: {
phone: “1234567890”,
email: “rajesh.dev.com”,
},
},
{
name: “Subham”,
age: 20,
address: {
city: “Delhi”,
state: “Delhi”,
country: “India”,
},
hobbies: [“coding”, “reading”, “playing”],
skills: [“html”, “css”, “js”, “nodejs”],
education: {
school: “Delhi Public School”,
college: “Delhi University”,
degree: “B.Tech”,
},
projects: {
project1: “Portfolio”,
project2: “Blog”,
project3: “E-commerce”,
},
social: {
github: “subham.github.io”,
linkedin: “subham.linkedin.com”,
twitter: “subham.twitter.com”,
},
work: {
company: “XYZ”,
position: “Software Engineer”,
experience: “2 years”,
},
achievements: {
achievement1: “Won a hackathon”,
achievement2: “Got a scholarship”,
achievement3: “Got a job”,
},
interests: {
interest1: “Reading”,
interest2: “Playing”,
interest3: “Coding”,
},
languages: {
language1: “English”,
language2: “Hindi”,
language3: “Punjabi”,
},
contact: {
phone: “1234567890”,
email: “subham.dev.com”,
},
},
{
name: “Rahul”,
age: 20,
address: {
city: “Delhi”,
state: “Delhi”,
country: “India”,
},
hobbies: [“coding”, “reading”, “playing”],
skills: [“html”, “css”, “js”, “nodejs”],
education: {
school: “Delhi Public School”,
college: “Delhi University”,
degree: “B.Tech”,
},
projects: {
project1: “Portfolio”,
project2: “Blog”,
project3: “E-commerce”,
},
social: {
github: “rahul.github.io”,
linkedin: “rahul.linkedin.com”,
twitter: “rahul.twitter.com”,
},
work: {
company: “XYZ”,
position: “Software Engineer”,
experience: “2 years”,
},
achievements: {
achievement1: “Won a hackathon”,
achievement2: “Got a scholarship”,
achievement3: “Got a job”,
},
interests: {
interest1: “Reading”,
interest2: “Playing”,
interest3: “Coding”,
},
languages: {
language1: “English”,
language2: “Hindi”,
language3: “Punjabi”,
},
contact: {
phone: “1234567890”,
email: “rahul.dev.com”,
},
},
];
module.exports = data;
`
- Now our server will look like this
`js
const http = require(‘http’);
const data = require(‘./data’);
http.createServer((req, res) => {
res.writeHead(200, {‘Content-Type’: ‘application/json’});
res.write(JSON.stringify(data));
res.end();
}
).listen(5000);
`
-
Now we can run this server using
nodemon server.js
و با استفاده از مرورگر آن را بررسی کنیدlocalhost:5000
-
حالا می توانیم خروجی را در مرورگر به این صورت ببینیم
[{"name":"Rajesh","age":20,"address":{"city":"Delhi","state":"Delhi","country":"India"},"hobbies":["coding","reading","playing"],"skills":["html","css","js","nodejs"],"education":{"school":"Delhi Public School","college":"Delhi University","degree":"B.Tech"},"projects":{"project1":"Portfolio","project2":"Blog","project3":"E-commerce"},"social":{"github":"rajesh.github.io","linkedin":"rajesh.linkedin.com","twitter":"rajesh.twitter.com"},"work":{"company":"XYZ","position":"Software Engineer","experience":"2 years"},"achievements":{"achievement1":"Won a hackathon","achievement2":"Got a scholarship","achievement3":"Got a job"},"interests":{"interest1":"Reading","interest2":"Playing","interest3":"Coding"},"languages":{"language1":"English","language2":"Hindi","language3":"Punjabi"},"contact":{"phone":"1234567890","email":"rajesh.dev.com"}},{"name":"Subham","age":20,"address":{"city":"Delhi","state":"Delhi","country":"India"},"hobbies":["coding","reading","playing"],"skills":["html","css","js","nodejs"],"education":{"school":"Delhi Public School","college":"Delhi University","degree":"B.Tech"},"projects":{"project1":"Portfolio","project2":"Blog","project3":"E-commerce"},"social":{"github":"subham.github.io","linkedin":"subham.linkedin.com","twitter":"subham.twitter.com"},"work":{"company":"XYZ","position":"Software Engineer","experience":"2 years"},"achievements":{"achievement1":"Won a hackathon","achievement2":"Got a scholarship","achievement3":"Got a job"},"interests":{"interest1":"Reading","interest2":"Playing","interest3":"Coding"},"languages":{"language1":"English","language2":"Hindi","language3":"Punjabi"},"contact":{"phone":"1234567890","email":"subham.dev.com"}},{"name":"Rahul","age":20,"address":{"city":"Delhi","state":"Delhi","country":"India"},"hobbies":["coding","reading","playing"],"skills":["html","css","js","nodejs"],"education":{"school":"Delhi Public School","college":"Delhi University","degree":"B.Tech"},"projects":{"project1":"Portfolio","project2":"Blog","project3":"E-commerce"},"social":{"github":"rahul.github.io","linkedin":"rahul.linkedin.com","twitter":"rahul.twitter.com"},"work":{"company":"XYZ","position":"Software Engineer","experience":"2 years"},"achievements":{"achievement1":"Won a hackathon","achievement2":"Got a scholarship","achievement3":"Got a job"},"interests":{"interest1":"Reading","interest2":"Playing","interest3":"Coding"},"languages":{"language1":"English","language2":"Hindi","language3":"Punjabi"},"contact":{"phone":"1234567890","email":"rahul.dev.com"}}]
کد وضعیت
اگر به جای 200 ارسال کنم، 404 را بفرستم، در کد وضعیت پستچی نشان داده نمی شود زیرا کدهای وضعیت زیادی وجود دارد. ما بر اساس نیاز خود از آنها استفاده می کنیم.
برخی از کدهای وضعیت عبارتند از:
- 200 – باشه
- 201 – ایجاد شد
- 204 – بدون محتوا
- 400 – درخواست بد
- 401 – غیر مجاز
- 403 – ممنوع
- 404 پیدا نشد
- 500 – خطای سرور داخلی
- 503 خدمات در دسترس نیست
در اینجا می توانید تمام کدهای وضعیت را بررسی کنید