我创建了一个简单的SpringBootREST服务来处理HTML页面中的发布数据。当我发布数据时,一切正常,但当我想检查@RequestMapping value href上的数据时,我看到错误消息:
白标错误页
此应用程序没有/error的显式映射,因此您将其视为回退。
周三11月15 13:33:46CET 2017有一个意外的错误(类型=坏请求,状态=400)。缺少所需的请求正文:公共org.springframework.http.响应实体
如何检查和获取发送的数据?我的代码:
JS:
$.ajax({
url: 'http://localhost:8080/api/questionsPost',
dataType: 'json',
type: 'post',
contentType: 'application/json',
data: JSON.stringify(scoreObj),
success: function( data, textStatus, jQxhr ){
console.log(data, textStatus, jQxhr)
},
error: function( jqXhr, textStatus, errorThrown ){
console.log( jqXhr, textStatus, errorThrown );
}
});
Rest控制器:
package pl.sample.atms.web.rest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import pl.sample.atms.dao.QuestionRepository;
import pl.sample.atms.dto.Question;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping(value = "/api", method = {RequestMethod.GET, RequestMethod.POST})
public class QuestionRestController {
@Autowired
private QuestionRepository questionRepository;
@PostMapping("/questionsPost")
public ResponseEntity<List<Question>> getQuestions5(@RequestBody Question myQuestion) {
System.out.println(ResponseEntity.ok(new ArrayList<>()));
System.out.println(myQuestion);
return ResponseEntity.ok(new ArrayList<>());
}
}
问题dto
package pl.sample.atms.dto;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Question {
@Id
private Long id;
private String title;
public Question() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
问题库
package pl.sample.atms.dao;
import org.springframework.data.repository.CrudRepository;
import pl.sample.atms.dto.Question;
import java.util.List;
public interface QuestionRepository extends CrudRepository<Question, Long> {
List<Question> findByTitle(String title);
}
使现代化
我更改了Rest控制器代码:
package pl.sample.atms.web.rest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import pl.sample.atms.dao.QuestionRepository;
import pl.sample.atms.dao.UserInfoRepository;
import pl.sample.atms.dto.Question;
import pl.sample.atms.dto.QuestionAnswer;
import pl.sample.atms.dto.Response;
import pl.sample.atms.dto.UserInfo;
import java.util.ArrayList;
import java.util.List;
import static org.apache.commons.lang3.StringUtils.isBlank;
@RestController
@RequestMapping("/api")
public class QuestionRestController {
@Autowired
private QuestionRepository questionRepository;
@Autowired
private UserInfoRepository userInfoRepository;
private List<Question> question = new ArrayList<Question>();
@GetMapping(value = "/questionsGet")
public Response getResource() {
Response response = new Response("Done", question);
return response;
}
@PostMapping(value = "/questionsPost")
public Response postCustomer(@RequestBody Question oneQuestion) {
question.add(oneQuestion);
Response response = new Response("Done", oneQuestion);
return response;
}
}
我创建了新的类-响应:
package pl.sample.atms.dto;
public class Response {
private String status;
private Object data;
public Response(){
}
public Response(String status, Object data){
this.status = status;
this.data = data;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
现在我可以看到一些发送的数据,但不幸的是,它不是使用JavaScript JSON生成和发送的,但是:
{"status":"Done","data":[{"id":null,"title":null}]}
我需要的JSON的结构:
"{"N":["4","4","5","4","2"],"E":["4","4","5","3","1"],"O":["3","3","4","2","3"],"U":["2","2","2","2","4"],"S":["3","2","2","3","3"]}"
我真的不知道我做错了什么,但我觉得我已经接近解决这个问题了。
在使用@Post映射注释时,您将方法限制为仅发布请求。
这相当于:
@RequestMapping(value = "/questionsPost", method = RequestMethod.POST)
如果您想同时接受POST和GET,我会将其更改为:
@RequestMapping(value = "/questionsPost")
该值表明邮政请求-
更新根据你对你试图完成的事情的评论,我强烈建议有两种不同的方法。如果您要发布数据或尝试获取数据,Spring将知道调用哪个方法。然后相应地调整你的业务逻辑。
Post的一种方法:
@RequestMapping(value = "/questions", method = RequestMethod.POST)
获取的一种方法:
@RequestMapping(value = "/questions", method = RequestMethod.GET)
我在Heroku上托管了一个Springboot应用程序。构建和部署工作得非常好。然而,每当我想访问该方法时,我都会看到这个错误<代码>出现意外错误(类型=错误请求,状态=400) 如果我使用loclhost,但使用Heroku的应用程序时抛出错误,那么它在Postman上运行得非常好。 这是控制器的样子。我猜这就是问题的来源。 . 你认为我能做些什么让api在Heroku上工作?
试图请求映射提交,但我得到了这个错误,我真的不明白为什么,因为我以为每个人都提供了: [...] 上的方法是在我的控制器中映射此方法:
我正在使用实现一个联系人应用程序。现在,我正试图通过发送以下格式的put请求来更新联系人 我将XML作为字符串发送,作为请求的主体。这是我的xmlString(请求主体) 我写了下面的代码来发送更新联系人的PUT请求。 当我试图在中发送请求时,联系人更新成功。但是当我试图运行上面的程序时,我得到了 400错误请求错误 我不知道我哪里出错了。任何帮助都将不胜感激!
我正在为一个项目使用Hackerrank API。查看官方文档,点击这里! 在他们的网站上有一个使用UNIREST的例子, 由于我使用的是axios,所以我将其转换为类似的axios代码,如下所示: 我希望这只适用于示例中所示的示例,但它给我带来了以下错误: 请求失败,状态代码为400 错误:请求失败,状态代码为400 在createError(createError.js:16) 在sett(s
我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:
目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示: