我正在使用Spring Framework 4.0.7,MVC和Rest
我可以在以下方面安心工作:
@Controller
ResponseEntity<T>
例如:
@Controller
@RequestMapping("/person")
@Profile("responseentity")
public class PersonRestResponseEntityController {
用的方法(只是创建)
@RequestMapping(value="/", method=RequestMethod.POST)
public ResponseEntity<Void> createPerson(@RequestBody Person person, UriComponentsBuilder ucb){
logger.info("PersonRestResponseEntityController - createPerson");
if(person==null)
logger.error("person is null!!!");
else
logger.info("{}", person.toString());
personMapRepository.savePerson(person);
HttpHeaders headers = new HttpHeaders();
headers.add("1", "uno");
//http://localhost:8080/spring-utility/person/1
headers.setLocation(ucb.path("/person/{id}").buildAndExpand(person.getId()).toUri());
return new ResponseEntity<>(headers, HttpStatus.CREATED);
}
退还一些东西
@RequestMapping(value="/{id}", method=RequestMethod.GET)
public ResponseEntity<Person> getPerson(@PathVariable Integer id){
logger.info("PersonRestResponseEntityController - getPerson - id: {}", id);
Person person = personMapRepository.findPerson(id);
return new ResponseEntity<>(person, HttpStatus.FOUND);
}
工作良好
我可以用 :
@RestController
(我知道它与@Controller
+ 相同@ResponseBody
)@ResponseStatus
例如:
@RestController
@RequestMapping("/person")
@Profile("restcontroller")
public class PersonRestController {
用的方法(只是创建)
@RequestMapping(value="/", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void createPerson(@RequestBody Person person, HttpServletRequest request, HttpServletResponse response){
logger.info("PersonRestController - createPerson");
if(person==null)
logger.error("person is null!!!");
else
logger.info("{}", person.toString());
personMapRepository.savePerson(person);
response.setHeader("1", "uno");
//http://localhost:8080/spring-utility/person/1
response.setHeader("Location", request.getRequestURL().append(person.getId()).toString());
}
退还一些东西
@RequestMapping(value="/{id}", method=RequestMethod.GET)
@ResponseStatus(HttpStatus.FOUND)
public Person getPerson(@PathVariable Integer id){
logger.info("PersonRestController - getPerson - id: {}", id);
Person person = personMapRepository.findPerson(id);
return person;
}
我的问题是:
ResponseEntity
旨在表示整个HTTP响应。您可以控制其中的所有内容:状态码,标头和正文。
@ResponseBody
是HTTP响应正文的标记,并@ResponseStatus
声明HTTP响应的状态代码。
@ResponseStatus
不是很灵活。它标记了整个方法,因此您必须确保您的处理程序方法始终具有相同的行为。而且您仍然无法设置标题。您需要HttpServletResponse
或HttpHeaders
参数。
基本上,ResponseEntity
您可以执行更多操作。
null 例如: 方法(只创建) 归还某物 null null
问题内容: 我正在使用Spring Framework 4.0.7,MVC和Rest 我可以和以下人一起安心工作: 例如: With the method (just to create) to return something 工作正常 我可以用: (我知道它与+ 相同y) 例如: With the method (just to create) to return something 我的问题
我有一个运行良好的Spring启动应用程序,直到我在我的应用程序中包含Kafka消费者和生产者。运行完全没有问题的代码是有一个restController,如下所示: 这个rest终点给出了期望的响应。现在,我包括Kafka制作人和消费者 在包含这些消费者和生产者之后,我的应用程序没有启动。我没有看到之前应用程序运行正常时显示的以下行。 2019-12-12 15:01:12.090信息38376
问题内容: 我们正在使用Spring(4.1.1。)实现REST API。对于某些HTTP请求,我们希望返回一个没有主体的头作为响应。但是,使用似乎无效。通过MockMvc测试调用时,返回406(不可接受)。使用不带参数的值()工作正常。 方法: 测试用例(TestNG): 此堆栈跟踪失败: 问题答案: 注意:对于问题4.1.1.RELEASE中提到的版本,这是正确的。 通过来处理返回值。 当Re
我正在为我的REST Web服务使用Spring@RESTController。我尝试在rest方法中返回ResponseEntity对象的对象,而不是返回ModelAndView的对象。对于Strgin类型的响应,当我用一个Jaxbobject构建ResponseEntity时,它会给出HTTP错误406 下面不起作用
我一直在研究如何将Spring与REST结合使用的各种示例。我们的最终目标是Spring设置 我已经看到了两种不同的方法,用于在Spring中渲染REST > 在控制器中通过 通过存储库中的< code > @ RepositoryRestResource 我正在努力寻找的是,为什么你会使用一个而不是另一个。当尝试实施时,哪一个是最好的? 我们的数据库后端是Neo4j。