Nội dung
I. Problem
Mình có 1 response như sau:
{
"results": [
{
"jobId": 44137966,
"employerId": 575264,
"employerName": "REED",
"employerProfileId": null
},
{
"jobId": 1111,
"employerId": 57523232264,
"employerName": "EEEE",
"employerProfileId": null
}
]
}
Bây giờ mình muốn lưu thông tin trên dưới dạng csv, có hình dạng như sau:
jobId,employerId,employerName,employerProfileId
44137966,575264,REED,null
1111,57523232264,EEEE,null
II. Solution
Do postman không có chức năng này, nên chúng ta chỉ có cách là phải tạo ra 1 App đọc json và save thành csv file. Ở đây mình chọn App dạng nodejs vì nó đơn giản.
1. Mô tả cách xử lý vấn đề
- Từ postman ta gửi request như bình thường
- Server sẽ trả lại response
- Lấy response ở trên gửi vào App ở localhost
- App sẽ đọc và lưu thông tin vào file csv
- App trả lại thông tin là có lưu thông tin thành công hay ko
2. Tạo app bằng nodejs
- Đầu tiên, cần cài Nodejs vào máy trước. https://nodejs.org/en/download/
- Clone project https://github.com/sivcan/ResponseToFile-Postman bằng git
git clone https://github.com/sivcan/ResponseToFile-Postman
- Mở file
script.js
trong project vừa down về, copy đoạn code dưới đây, đặt vào cuối file.
const converter = require("json-2-csv");
app.post("/toCsv", (req, res) => {
let filename = `File_${Date.now()}`,
filePath = `${path.join(folderPath, filename)}.csv`;
converter.json2csv(req.body, (err, csv) => {
fs.writeFileSync(filePath, csv);
if (err) {
console.log(err);
res.send("Error");
} else {
res.send("Success");
}
});
});
- Mở powershell/cmd rồi
cd
vào folder project, ví dụ:
- Run
npm i
(download các thư viện cần thiết cho project)
- Run
node --no-warnings .\script.js
để start App
3. Viết phần tạo request trong postman test
Mở tab Tests trên postman và điền đoạn code dưới đây:
const list = pm.response.json().results;
const postRequest = {
url: 'http://localhost:3000/toCsv',
method: 'POST',
header: {
'Content-Type': 'application/json',
},
body: {
mode: 'raw',
raw: JSON.stringify(list)
}
};
pm.sendRequest(postRequest, (error, response) => {
console.log(error ? error : response);
});
Lưu ý: request body của request này phải là Array của các object nhé.
III. Test thử nghiệm
Nếu bạn nào cần test thử, bạn có thể import curl vào postman:
curl --location --request POST 'https://auto-test-challenges.herokuapp.com/echo' \
--header 'Content-Type: application/json' \
--data-raw '{
"results": [
{
"jobId": 44137966,
"employerId": 575264,
"employerName": "REED",
"employerProfileId": null
},
{
"jobId": 1111,
"employerId": 57523232264,
"employerName": "EEEE",
"employerProfileId": null
}
]
}'
Nguồn:
https://giangtester.com/api-testing-voi-postman-phan-27-luu-response-body-duoi-dang-file-csv/