42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
import axios from "axios";
|
|
|
|
function toJSON(data) {
|
|
const jsonObj = {};
|
|
const fields = Object.getOwnPropertyNames(data);
|
|
for (const field of fields) {
|
|
if (data[field] === undefined) {
|
|
continue;
|
|
}
|
|
jsonObj[field] = data[field];
|
|
}
|
|
return jsonObj;
|
|
}
|
|
|
|
export default class DataService {
|
|
static dataUrlPrefix = 'http://localhost:8080/';
|
|
|
|
static async readAll(url, transformer) {
|
|
const response = await axios.get(this.dataUrlPrefix + url);
|
|
return response.data.map(item => transformer(item));
|
|
}
|
|
|
|
static async read(url, transformer) {
|
|
const response = await axios.get(this.dataUrlPrefix + url);
|
|
return transformer(response.data);
|
|
}
|
|
|
|
static async create(url, data) {
|
|
const response = await axios.post(this.dataUrlPrefix + url, toJSON(data));
|
|
return true;
|
|
}
|
|
|
|
static async update(url, data) {
|
|
const response = await axios.put(this.dataUrlPrefix + url, toJSON(data));
|
|
return true;
|
|
}
|
|
|
|
static async delete(url) {
|
|
const response = await axios.delete(this.dataUrlPrefix + url);
|
|
return response.data.id;
|
|
}
|
|
} |