Я построил службу API REST с использованием Java Spring Cloud/Boot. Во-первых, я сделал простой класс, связанный с MongoDB и контроллером с сервисом, который должен позволить мне добавлять, удалять, обновлять и получать все объекты. При использовании POSTMAN все они работают, однако, когда я хочу добавить или обновить объект, используя API-интерфейс redux и fetch, я получаю сообщение о статусе 400 и ошибке «плохой запрос». Кажется, что это связано с JSON, который я отправляю в тело, но это точно такой же формат JSON, который работает, например, с POSTMAN.Java REST API Статус ответа 400 на POST/PUT
Мои действия в Redux. Для простоты/тестирования я добавил объект вверху вместо использования объекта, отправляемого со страницы.
var assetObject = {
"vendor" : "why dis no work?",
"name": "wtf",
"version": "231",
"category" : "qsd",
"technology" : "whatever"
}
export function addAsset(access_token, asset) {
return dispatch => {
fetch(constants.SERVER_ADDRESS + '/as/asset/add',
{
method: 'POST',
credentials: 'include',
headers: {
'Authorization': 'Bearer' + access_token,
'Content-Type': 'application/json'
},
body: assetObject
})
.then(res => dispatch({
type: constants.ADD_ASSET,
asset
}))
}
}
код контроллера в Java Spring:
@RequestMapping(method = RequestMethod.POST, path = "/add")
public void addAsset(@RequestBody Asset asset) {
assetService.addAsset(asset);
}
Состояние нормально, делая это в почтальона:
Я получаю ошибку при использовании Redux/Fetch API (я только удалена структура каталогов, поскольку в нем есть название компании):
Застряли на этом какое-то время, любая помощь очень ценится!
EDIT Asset Объект:
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "assets")
public class Asset {
@Id
private String id;
private String vendor;
private String name;
private String version;
private String category;
private String technology;
public Asset() {
}
public Asset(String id,
String vendor,
String name,
String version,
String category,
String technology) {
this.id = id;
this.vendor = vendor;
this.name = name;
this.version = version;
this.category = category;
this.technology = technology;
}
public String getId() {
return id;
}
public String getVendor() {
return vendor;
}
public String getName() {
return name;
}
public String getVersion() {
return version;
}
public String getCategory() {
return category;
}
public String getTechnology() {
return technology;
}
public void setId(String id) {
this.id = id;
}
public void setVendor(String vendor) {
this.vendor = vendor;
}
public void setName(String name) {
this.name = name;
}
public void setVersion(String version) {
this.version = version;
}
public void setCategory(String category) {
this.category = category;
}
public void setTechnology(String technology) {
this.technology = technology;
}
}
вы можете копировать/вставить объект Java Asset? –
Добавлен код. – Matthias
вам не хватает ID в вашем json, получая 400. Не могли бы вы попробовать и сообщить мне результат? –