current position:Home>Express request methods -- get, post, patch, delete
Express request methods -- get, post, patch, delete
2021-08-27 03:18:27 【Mannqo】
This is my participation 8 The fourth of the yuegengwen challenge 16 God , Check out the activity details :8 Yuegengwen challenge
mention node I'll think of express, Just started learning express It's still a little difficult , stay b I've been looking for a lot of courses to see , Learn from the basics step by step .
Express
One 、 Introduce Express
Express Have a rich foundation API
Support , And common HTTP
Auxiliary program , For example, redirection 、 Cache, etc ; It has powerful routing function 、 Flexible middleware ; High performance and stability ;Express Only... Is provided web Basic functions of development , It passes through middleware The method integrates many external plug-ins to handle HTTP
request .
body-parser
: analysisHTTP
Request bodycompression
: CompressHTTP
Respond tocookie-parser
: analysis cookie datacors
: Handle cross domain resource requestsmorgan
:HTTP
Request logging- ...
Express Middleware for Express Itself becomes more flexible and simple , The disadvantage is that although some middleware packages solve almost all problems or requirements across domains , But choosing the right package can sometimes be a challenge .Express incorrect Node.js
Second abstraction of existing features , Just expand on it web The basic functions required by the application ;
- Internal use is still
HTTP
modular - The request object inherits from :
http.IncomingMessage
- The response object inherits from :
http.ServerResponse
There are many popular frameworks based on Express, such as LoopBack
、Sails
、NextJs
Express Of Hello World
introduce express modular , Create a server , And then on the browser get Request to respond ;
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!'); // Send a response
})
app.listen(3000);
Copy code
Two 、 Routing basis
Routing is to determine how an application responds to a client's request for a particular endpoint , The specific endpoint is URI( Or the path ) And specific HTTP
Request method (get,post etc. ). Each route can have one or more handler functions , These functions execute when matching the route ; Adopt the following structure to realize :( As above get request )
app.method(path, handle);
Copy code
app
yes Express example- method It's lowercase
HTTP
Request method - path It's the path on the server
- handle Is the function performed when the route matches
Requests and responses
Express The application uses the parameters of the route callback function :request
and response
Object to process the corresponding request and response data ;
-
Request object : Get information about the request ; Inherited from
http.IncomingMessage
-
stay express Through
req.query
Get request parameters ; Specific reference Express - API file -
The response object : Used to process requests and send responses ; Inherited from
http.ServerResponse
res.cookie('foo', 'bar'); res.status(201).send({foo: 'bar'}); // Set the status and respond Copy code
3、 ... and 、 Four ways to request
When we write each route , Generally, you have to read some content and respond to the browser , For example, we put the data in db.json
In the document , And then again app.js
Used in documents fs.readFile()
Reading data ; Here we can put app.js
Some frequently used methods used in are written in another file db.js
Inside , such as fs.readFiles()
Method ;
const fs = require('fs')
const { promisify } = require('util')
const path = require('path');
const readFile = promisify(fs.readFile);
const dbPath = path.join(__dirname, './db.json'); // Absolute path
exports.getDb = async () => {
const data = await readFile(dbPath, 'utf-8');
return JSON.parse(data);
}
Copy code
1. get request
After encapsulation, in app.js
Pass through await getDb()
You can get the corresponding data content ;( Remember async
); If it doesn't exist, go back 404 Status code , If found, respond to the found data content ; use try...catch
To avoid a small number of errors that make the whole program unable to run ; Be careful :req.params
For request parameters
const { getDb } = require('./db')
app.get('/todos/:id', async (req, res) => {
try {
const db = await getDb();
const todo = db.todos.find(todo => todo.id === Number.parseInt(req.params.id));
if (!todo) { return res.status(404).end(); }
res.status(200).json(todo);
} catch (err) {
res.status(500).json({
error: err.message
})
}
})
Copy code
2. post request
-
Configure parsing form request body
application/json
:app.use(express.json())
; takejson
Data in the form ofjs
object ;application/x-www-form-urlencoded
:app.use(express.urlencoded)
-
post We usually use it to submit data , Here we need to use
fs.writeFile
; -
similarly , Write the method in
db.js
In file ; When writing data , If we want to make json If the data in appears to be formatted , With(db, null, ' ')
Is a parameter ;exports.saveDb = async () => { const data = JSON.stringify(db, null, ' '); // Give Way db.json The data in has a format await writeFile(dbPath, data); } Copy code
-
Later on
app.js
Process the data , Iftodo.title
If it doesn't exist, go back 404, If it exists, the data will be added push To the corresponding array (todo
) in , Write data after data submission ;try { if (!todo.title) { return res.status(404).json({ error: 'The field title is required' }) } const db = await getDb(); const lastTodo = db.todos[db.todos.length - 1]; todo.id = lastTodo ? lastTodo.id + 1 : 1; db.todos.push(todo); await saveDb(db); res.status(200).json(todo); } catch (err) { res.status(500).json({ error: err.message }) } Copy code
3. patch request
-
First pass
req.body
Get form data :const todo = req.body;
-
Find the task item to modify , If you don't find it, you don't have to change it , Go straight back to 404 that will do ; If found, modify the data ,
const db = await getDb(); const ret = db.todos.find(todo => todo.id === Number.parseInt(req.params.id)); if (!res) { return res.status(404).end(); } Object.assign(ret, todo); await saveDb(db); res.status(200).json(ret); Copy code
Be careful :
Object.assign
The method is shallow copy , The first parameter is the target object , Later parameters are all source objects ; If the target object has the same property as the source object , Or multiple source objects have properties with the same name , Then the following properties will overwrite the previous properties ;
4. delete operation
-
Find the item to delete
const todoId = Number.parseInt(req.params.id); const db = await getDb(); const index = db.todos.findIndex(todo => todo.id === todoId); Copy code
-
findIndex
ThisAPI
Find return index , If you don't find it, go back -1; Once found, delete this data ;if (index === -1) { return res.status(404).end(); } db.todos.splice(index, 1); await saveDb(db); res.status(200).end(); Copy code
I've always been curious about how the browser and server connect , Finally learned express Understand the process
copyright notice
author[Mannqo],Please bring the original link to reprint, thank you.
https://en.qdmana.com/2021/08/20210827031823836W.html
The sidebar is recommended
- Crazy blessing! Tencent boss's "million JVM learning notes", real topic of Huawei Java interview 2020-2021
- JS JavaScript how to get the subscript of a value in the array
- How to implement injection in vuex source code?
- JQuery operation select (value, setting, selected)
- One line of code teaches you how to advertise on Tanabata Valentine's Day - Animation 3D photo album (music + text) HTML + CSS + JavaScript
- An article disassembles the pyramid architecture behind the gamefi outbreak
- BEM - a front-end CSS naming methodology
- [vue3] encapsulate custom global plug-ins
- Error using swiper plug-in in Vue
- Another ruthless character fell by 40000, which was "more beautiful" than Passat and maiteng, and didn't lose BMW
guess what you like
-
Huang Lei basks in Zhang Yixing's album, and the relationship between teachers and apprentices is no less than that in the past. Netizens envy Huang Lei
-
He was cheated by Wang Xiaofei and Li Chengxuan successively. Is an Yixuan a blessed daughter and not a blessed home?
-
Zhou Shen sang the theme song of the film "summer friends and sunny days" in mainland China. Netizen: endless aftertaste
-
Pink is Wangyuan online! Back to the peak! The new hairstyle is creamy and sassy
-
Front end interview daily 3 + 1 - day 858
-
Spring Webflux tutorial: how to build reactive web applications
-
[golang] walk into go language lesson 24 TCP high-level operation
-
August 23, 2021 Daily: less than three years after its establishment, Google dissolved the health department
-
The female doctor of Southeast University is no less beautiful than the female star. She has been married four times, and her personal experience has been controversial
-
There are many potential safety hazards in Chinese restaurant. The top of the program recording shed collapses, and the artist will fall down if he is careless
Random recommended
- Anti Mafia storm: He Yun's helpless son, Sun Xing, is destined to be caught by his dry son
- Introduction to flex flexible layout in CSS -- learning notes
- CSS learning notes - Flex layout (Ruan Yifeng tutorial summary)
- Today, let's talk about the arrow function of ES6
- Some thoughts on small program development
- Talk about mobile terminal adaptation
- Unwilling to cooperate with Wang Yibo again, Zhao Liying's fans went on a collective strike and made a public apology in less than a day
- JS function scope, closure, let, const
- Zheng Shuang's 30th birthday is deserted. Chen Jia has been sending blessings for ten years. Is it really just forgetting to make friends?
- Unveil the mystery of ascension
- Asynchronous solution async await
- Analysis and expansion of Vue infinite scroll source code
- Compression webpack plugin first screen loading optimization
- Specific usage of vue3 video play plug-in
- "The story of huiyeji" -- people are always greedy, and fairies should be spotless!
- Installing Vue devtool for chrome and Firefox
- Basic usage of JS object
- 1. JavaScript variable promotion mechanism
- Two easy-to-use animation JS that make the page move
- Front end Engineering - scaffold
- Java SQL Server intelligent fixed asset management, back end + front end + mobile end
- Mediator pattern of JavaScript Design Pattern
- Array de duplication problem solution - Nan recognition problem
- New choice for app development: building mobile applications using Vue native
- New gs8 Chengdu auto show announces interior Toyota technology blessing
- Vieira officially terminated his contract and left the team. The national security club sent blessings to him
- Less than 200000 to buy a Ford RV? 2.0T gasoline / diesel power, horizontal bed / longitudinal bed layout can be selected
- How does "heart 4" come to an end? Pinhole was boycotted by the brand, Ma Dong deleted the bad comments, and no one blessed him
- We are fearless in epidemic prevention and control -- pay tribute to the front-line workers of epidemic prevention!
- Front end, netty framework tutorial
- Xiaomi 11 | miui12.5 | android11 solves the problem that the httpcanary certificate cannot be installed
- The wireless charging of SAIC Roewe rx5 plus is so easy to use!
- Upload and preview pictures with JavaScript, and summarize the most complete mybatis core configuration file
- [25] typescript
- CSS transform Complete Guide (Second Edition) flight.archives 007
- Ajax foundation - HTTP foundation of interview essential knowledge
- Cloud lesson | explain in detail how Huawei cloud exclusive load balancing charges
- Decorator pattern of JavaScript Design Pattern
- [JS] 10. Closure application (loop processing)
- Left hand IRR, right hand NPV, master the password of getting rich