如何识别Web服务是REST还是SOAP?

How to identify whether web service is REST or SOAP?

我正在学习 spring MVC 并编写了以下代码。我阅读了一些关于 SOAP 和 REST 的文章,但在我编写的初级控制器代码中,我无法区分使用的是 SOAP 还是 REST。我的控制器代码如下:


import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.model.Customer;

@Controller
public class SelectController {




    @RequestMapping("/")
    public String display(){

        System.out.println("Inside controller");
        return "demo";
    }

    @RequestMapping("/index")
    public String indexpage(HttpServletRequest req, Model m){

        String name = req.getParameter("name");
        String pass = req.getParameter("pass");

        String random = req.getParameter("abc");


        System.out.println("Index page"+name+pass+random);

        Customer cust = new Customer();

        cust.setUsername(name);
        cust.setPassword(pass);

        System.out.println("Index page"+name+pass);

        m.addAttribute("customer", cust);
        return "hello";
    }

你写的Controller是

neither REST nor SOAP.

它是一个 MVC 控制器。 在你的情况下,你的 returning "hello" 字符串在控制器方法的末尾,它反过来将 translated/mapped 到页面(hello.jsp 或 hello.html 基于在配置上)和 returns 相同。所以,最后,您得到的是以漂亮的方式呈现的页面,并应用了所有必要的样式和脚本。

相比之下,REST 和 SOAP 不是这样工作的。它的主要目的是单独传输数据(但你也可以发送HTML页面)

编写 REST 服务与您目前所拥有的几乎相似,并且相当容易。如果您使用 Springboot,那么您所要做的就是直接将 @Controller 注释替换为 @RestController 和 return Customer 对象。在 REST 控制器中,您不会有 HttpServletRequest & Model 参数。

但是编写 SOAP 服务是另一个看起来可能完全不同的主题。 网络上散布着大量示例和教程,您可以轻松找到这些主题。

参考文献:

Controller vs RestController in Spring

Difference between Controller & RestController in Spring

SOAP vs REST

希望这能让你对这三个是什么有一些高层次的了解。