NodeJS + Express 파티 2: 경로 매개변수
13382 단어 beginnersexpressjavascriptnode
Cette série est la suite de ma série sur les bases de NodeJS. Si vous n'avez pas les connaissances de bases en NodeJS lisez cette série d'abord :
Node.js est aujourd'hui uncontournable, il est donc essentiel pour un développeur de le maitriser.
Je vais donc publier un nouvel article environ au deux jours et petit à petit vous apprendrez tout ce qu'il y a savoir sur Node.js + Espress
푸어 네 리엔 만케르 suivez moi sur twitter :
Données provant d'un fichier de données JSON
Dans une application réelle, les données ne seront pas envoyées directement dans le res.json(). Les données seront lues à partir d'une base de données.
푸어 레 exemples suivants, nous allons créer une base de données texte JSON 푸어 에이더 à imiter ce 시나리오.
créez un nom de fichier data.js 및 copyz/collez ce 코드
const products = [
{ id: 1, name: 'iPhone', price: 800 },
{ id: 2, name: 'iPad', price: 650 },
{ id: 3, name: 'iWatch', price: 750 }
]
module.exports = products
Changez le app.get() 특사 les données des produits
const express = require('express')
const app = express()
const products = require('./data.js')
app.listen(5000, () => {
console.log('server is listening on port 5000')
})
app.get('/api/products', (req, res) => {
res.json(products)
})
CE code renverra tout le contenu des produits.
Parfois, il peut être pratique de ne renvoyer qu'une partie des produits. Par exemple Sures champs peuvent être Confidiels.
Voici un exemple retournant tout sauf le prix
app.get('/api/products', (req, res) => {
const partial_products = products.map(product => {
return { id: product.id, name: product.name }
})
res.json(partial_products)
})
경로 매개변수
Qu se passe-t-il si vous souhaitez 충전기 고유 le produit avec l'ID #1. La Convention veut que le chemin URL soit quelque가 선택한 comme: api/products/1
Espress un moyen simple de gérer ce 장르 드 디맨드
app.get('/api/products/:productID', (req, res) => {
const id = Number(req.params.productID)
const product = products.find(product => product.id === id)
res.json(product)
})
참고:productID dans l'URL de la route. Le :productID est un "wildcard"는 'api/products/'를 입력합니다(예: api/products/1).
Le productID peut être récupéré à partir de votre demande avec le req.params.productID
Qu'est-ce qui s'ajoute sila demande contient un identifiant qui n'est pas dans les données. 예: 'api/product/1080' ? Rien ne sera affiché.
Par Convention dans cette 상황, nous renvoyons un statut 404 Not Found
app.get('/api/products/:productID', (req, res) => {
const id = Number(req.params.productID)
const product = products.find(product => product.id === id)
if (!product) {
return res.status(404).send('Product not found')
}
res.json(product)
})
쿼리 문자열
Il est courant qu'une API autorise l'utilisateur à faire une requete de recherche. Par exemple si un utilisateur veut tous les produits dont le nom contient le mot "phone"il peut envoyer cette demande
GET api/query/?name=phone
Comme tout le reste, Express dispose d'un moyen simple de récupérer les données de la chaîne de requete. Nous pouvons utiliser le "req.query"푸어 récupérer la chaîne de requete.
app.get('/api/query', (req, res) => {
const name = req.query.name.toLowerCase()
const products_result = products.filter(product => product.name.toLowerCase().includes(name))
if (products_result.length < 1) {
return res.status(200).send('No products matched your search')
}
res.json(products_result)
})
const name = req.query.name.toLowerCase() a recupéré la chaîne de requete nommée "name"à partir de l'URL et la convertit en 소문자.
Ensuite, nous n'avons qu'à filtrer notre liste de produits sur cette valeur pour obtenir les products_results
결론
C'est tout pour aujourd'hui, suivez moi sur twitter : afin d'être avisé de la parution du prochain article (d'ici deux jours).
Reference
이 문제에 관하여(NodeJS + Express 파티 2: 경로 매개변수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ericlecodeur/nodejs-express-partie-2-route-parameters-3n12텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)