春季休息vs标准休息?

时间:2018-02-01 03:19:59

标签: java spring rest spring-mvc restful-architecture

在春季文档中,我可以得到以下有关弹簧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;
    }
}

2 个答案:

答案 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/

有时我也会检查它。