我正在学习 Spring MVC 并编写了以下代码。我读了一些关于 SOAP 和 REST 的文章,但在我编写的初级 Controller 代码中,我无法区分使用的是 SOAP 还是 REST。我的 Controller 代码如下:
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 Controller 。 在您的情况下,您在 Controller 方法末尾返回“hello”字符串,该字符串又被翻译/映射到页面(基于配置的 hello.jsp 或 hello.html)并返回相同的内容。因此,最后,您得到的是页面以漂亮的方式呈现,并应用了所有必要的样式和脚本。
相比之下,REST 和 SOAP 则不然。它的主要目的是单独传输数据(但你也可以发送HTML页面)
编写 REST 服务几乎与您当前所拥有的类似,并且相当容易。如果您使用Springboot,那么您只需将@Controller
注释替换为@RestController
并直接返回Customer对象即可。在 REST Controller 中,您不会有 HttpServletRequest 和 Model 参数。
但是编写 SOAP 服务是另一个主题,可能看起来完全不同。 网络上散布着大量示例和教程,您可以轻松找到有关这些主题的示例和教程。
引用文献:
Controller vs RestController in Spring
Difference between Controller & RestController in Spring
希望这能让您对这三个概念有一些高层次的了解。
关于java - 如何判断Web服务是REST还是SOAP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59244020/