NodeJS + Express 파티 2: 경로 매개변수

NodeJS + Express와 같은 애플리케이션 백엔드에 대한 기사 연속성.

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).

좋은 웹페이지 즐겨찾기