Thực thi một backend sử dụng Express, Mongoose ODM, và Jest (phần 28)

Định nghĩa các routes với một body yêu cầu JSON (tiếp tục)

4. Sau khi load body-parser, chúng ta biên tập src/routes/posts.js và nhập khẩu các hàm dịch vụ cần để thực hiện
phần còn lại routes của chúng ta:

createPost,
updatePost,
deletePost,

} from ‘../services/posts.js’

5. Bây giờ, chúng ta định nghĩa POST /api/v1/posts route bằng cách sử dụng app.post và req.body, bên trong hàm
postsRoutes:

app.post(‘/api/v1/posts’, async (req, res) => {

try {

const post = await createPost(req.body)
return res.json(post)

} catch (err) {

console.error(‘error creating post’, err)
return res.status(500).end()

}

})

6. Tương tự, chúng ta có thể định nghĩa update route, nơi chúng ta cần sử dụng id param và body yêu cầu:

app.patch(‘/api/v1/posts/:id’, async (req, res) => {

try {

const post = await updatePost(req.params.id, req.body)
return res.json(post)

} catch (err) {

console.error(‘error updating post’, err)
return res.status(500).end()

}

})

7. Cuối cùng, chúng ta định nghĩa delete route, cái không yêu cầu body-parser; chúng ta chỉ cần lấy id param ở đây.
Chúng ta trả về 404 nếu post không được tìm thấy, và 204 No Content nếu post đã được xóa thành công:

app.delete(‘/api/v1/posts/:id’, async (req, res) => {

try {

const { deletedCount } = await deletePost(req.params.id)
if (deletedCount === 0) return res.sendStatus(404)
return res.status(204).end()

} catch (err) {

console.error(‘error deleting post’, err)
return res.status(500).end()

}

})

Như chúng ta có thể thấy, Express thực hiện định nghĩa và xử lí các routes, yêu cầu và trả lời dễ dàng hơn nhiều.
Nó đã phát hiện và thiết lập xong các headers cho chúng ta, và vì vậy nó có thể đọc và gửi các trả lời JSON
đúng đắn. Nó cũng cho phép chúng ta thay đổi code trạng thái HTTP dễ dàng.
Bây giờ rằng chúng ta đã hoàn thành định nghĩa các routes với một body yêu cầu JSON, hãy cho phép truy cập vào
các routes của chúng ta từ các URLs khác sử dụng cross-origin resource sharing (CORS).

Chia sẻ