在春季文档中,我可以得到以下有关弹簧mvc和弹簧支架差异的解释。 Spring REST架构也基于Spring MVC,稍微改变了View部分。传统的Spring MVC依赖于View技术来呈现模型数据,Spring REST架构也是如此,除了模型对象直接设置到HTTP响应中,@ ResponsePody自动转换为JSON / XML。 RESTful Web服务的输出必须是JSON或XML,这是一种可以在不同的消费者应用程序平台上轻松处理的标准格式。
但在https://en.wikipedia.org/wiki/Representational_state_transfer。 它有几个例子,除了json响应,其余的将使用HTTP PUT / DELETE / POST方法来操纵资源。
我想知道弹簧控制器是否可以作为一种宁静的服务。我使用@RestController返回json响应,但没有使用任何其他休息功能。
@RestController
@RequestMapping(value = "/employee")
public class EmployeeController {
@RequestMapping(value = RequestAction.LOADLIST, method = RequestMethod.POST)
public List<Employee> list(@RequestBody Employee bo) {
System.out.println(bo);
return employeeList;
}
@RequestMapping(value = RequestAction.LOAD, method = RequestMethod.POST)
public Employee getEmployee(
@RequestBody Employee input) {
for (Employee employee : employeeList) {
if (employee.getId().equals(input.getId())) {
return employee;
}
}
return input;
}
@RequestMapping(value = RequestAction.ADD, method = RequestMethod.POST)
public Employee addEmployee(@RequestBody Employee bo) {
System.out.println(bo);
return bo;
}
@RequestMapping(value = RequestAction.UPDATE, method = RequestMethod.POST)
public Employee updateEmployee(@RequestBody Employee bo) {
System.out.println(bo);
for (Employee employee : employeeList) {
if (employee.getId().equals(bo.getId())) {
employee.setName(bo.getName());
return employee;
}
}
return bo;
}
}
答案 0 :(得分:0)
您的示例脚本不是REST,因为它更改了每个任务的URL,并始终使用POST动词。 Spring REST使用不同的HTTP谓词(GET,POST,DELETE)来区分操作。几次共享相同的网址。
示例:
@RestController
@RequestMapping("/users")
public class UsersController {
@GetMapping
public List<User> index() {...}
@GetMapping("{id}")
public User show(...) {...}
@PostMapping
public User create(...) {...}
@PutMapping("{id}")
public User update(...) {...}
@DeleteMapping("{id}")
public void delete(...) {...}
}
答案 1 :(得分:0)
您的示例未遵循REST API的常规规定(例如GET用于检索,POST用于创建,PUT用于完全更新,PATCH用于部分更新等),但这并不意味着您不能这样做。正如上面其他人所述,您可能对这个术语感到困惑。 REST是一种协议,它有很多关于服务使用的惯例,如果您遵循这些惯例,则可以说您的服务是REST或RESTful。 此页面是该领域最简单的辅导您的资源: https://restfulapi.net 更重要的是,在我们考虑您的示例时,https://restfulapi.net/http-methods/
有时我也会检查它。