Postingan lainnya
Rest API Java Spring Boot
Permisi ada yg bisa bantu buat coding pada controller untuk request post multiple data di postman? karena saya mendapatkan error terus menerus, mohon bantuannya terimakasihKeterangan error
package com.test.rest.api.controllers;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.test.rest.api.dtos.AnggotaDTO;
import com.test.rest.api.models.Anggota;
import com.test.rest.api.repositories.AnggotaRepository;
@RestController
@RequestMapping("/api")
public class AnggotaController {
@Autowired
private AnggotaRepository anggotaRepository;
ModelMapper modelMapper = new ModelMapper();
private Anggota convertAnggotaToEntity (AnggotaDTO anggotaDto) {
return modelMapper.map(anggotaDto, Anggota.class);
}
private AnggotaDTO convertAnggotaToDTO (Anggota anggota) {
return modelMapper.map(anggota, AnggotaDTO.class);
}
// API CREATE Anggota
@PostMapping("/anggota/create")
public Map<String, Object> createAnggota(@RequestBody AnggotaDTO anggotaDTO) {
Map<String, Object> mapResult = new HashMap<>();
Anggota anggota = convertAnggotaToEntity(anggotaDTO);
anggota.setAnggotaNama(anggotaDTO.getAnggotaNama());
anggota.setAnggotaUsia(anggotaDTO.getAnggotaUsia());
mapResult.put("message", "Craete Success");
mapResult.put("data", anggotaRepository.save(anggota));
return mapResult;
}
// API READ Anggota
@GetMapping("/anggota/get/findall")
public Map<String, Object> getAllAnggota () {
Map<String, Object> mapResult = new HashMap<>();
List<AnggotaDTO> listAnggotaDto = new ArrayList<>();
for (Anggota anggota : anggotaRepository.findAll()) {
AnggotaDTO anggotaDto = convertAnggotaToDTO(anggota);
listAnggotaDto.add(anggotaDto);
}
String message;
if (listAnggotaDto.isEmpty()) {
message = "Data is empty";
}
else {
message = "Show all data";
}
mapResult.put("message" , message);
mapResult.put("data", listAnggotaDto);
mapResult.put("total", listAnggotaDto.size());
return mapResult;
}
// API UPDATE Anggota
@PutMapping("/anggota/update")
public Map<String, Object> updateAnggota (@RequestParam(value="anggotaId") long anggotaId, @RequestBody AnggotaDTO anggotaDto) {
Map<String, Object> mapResult = new HashMap<>();
Anggota anggota = anggotaRepository.findById(anggotaId).orElse(null);
anggota.setAnggotaNama(anggotaDto.getAnggotaNama());
anggota.setAnggotaUsia(anggotaDto.getAnggotaUsia());
mapResult.put("message", "Update success");
mapResult.put("data", anggotaRepository.save(anggota));
return mapResult;
}
// API Delete Employee
@DeleteMapping("/anggota/delete/{anggotaId}")
public Map<String, Object> deleteAnggota (@PathVariable(value="anggotaId") long anggotaId) {
Map<String, Object> mapResult = new HashMap<>();
Anggota anggota = anggotaRepository.findById(anggotaId).orElse(null);
anggotaRepository.delete(anggota);
mapResult.put("message", "Delete Success");
return mapResult;
}
}
1 Jawaban:
<div>Dari error-nya, sepertinya json converter bawaan dari spring tidak bisa men-deserialize object Arraylist-of-AnggotaDTO ke JSON-String.<br>Coba convert array tersebut ke string, baru dimasukkan ke mapResult (HashMap).<br>bisa pakai library seperti <a href="https://github.com/google/gson">GSON</a> <br>e.g. mapResult.put("data", new Gson().toJson(listAnggotaDto)); <br>Error 400 Bad Request itu di Java (Spring Boot)-nya dan GSON itu library java,<br>Postman adalah client REST dan tidak ada hubungannya dengan error tersebut.<br><br></div>