Java RESTWeb应用程序:XML/JSON的作用是什么?

Java RESTWeb应用程序:XML/JSON的作用是什么?,java,json,xml,rest,service,Java,Json,Xml,Rest,Service,我目前正在学习REST应用程序,尤其是JavaREST的实现 我不确定JSON或XML在REST中扮演什么角色 一个示例显示我当前的理解: 用户单击前端上的按钮 用户被重新定向到URL,例如/User/{userid} 服务类中的Java方法调用repository(例如Crud repository)类来检索数据 存储库从数据库中提取数据(例如,关于特定用户的数据) 数据传回服务类,然后显示在用户界面上 JSON或XML在这个过程中适用于哪里 它是将数据从服务返回到前端的格式。它是将数据从服务

我目前正在学习
REST
应用程序,尤其是
Java
REST的实现

我不确定
JSON
XML
在REST中扮演什么角色

一个示例显示我当前的理解:

  • 用户单击前端上的按钮
  • 用户被重新定向到URL,例如/User/{userid}
  • 服务类中的Java方法调用repository(例如Crud repository)类来检索数据
  • 存储库从数据库中提取数据(例如,关于特定用户的数据)
  • 数据传回服务类,然后显示在用户界面上

  • JSON
    XML
    在这个过程中适用于哪里

    它是将数据从服务返回到前端的格式。

    它是将数据从服务返回到前端的格式。

    前端和api之间的数据传输是以JSON和/或XML完成的

    所以,简单地说。。。 用户通过某个web页面请求一些数据,web页面向RESTful API请求特定数据,API将数据作为JSON发送给web页面,然后web页面处理并显示这些数据,或者对这些数据执行任何需要执行的操作


    这是描述其角色的一般方式

    前端和api之间的数据传输是用JSON和/或XML完成的

    所以,简单地说。。。 用户通过某个web页面请求一些数据,web页面向RESTful API请求特定数据,API将数据作为JSON发送给web页面,然后web页面处理并显示这些数据,或者对这些数据执行任何需要执行的操作


    这是描述其角色的一般方式

    下面显示了控制器中的一个方法,该方法给出json响应

    @RequestMapping(value = "/getSomething", method = RequestMethod.POST)
        public @ResponseBody String getSomething(HttpServletRequest req) 
        {
    
            JSONArray jsonArr = new JSONArray();
            Collection someList = new ArrayList();
    
            someList = someService.getsomeList(req); // here you get the response from service class to controller
            Iterator iter = categoryList.iterator();
    
            while (iter.hasNext()) // iterate the colleection
            {
                    JSONObject jsonObj = new JSONObject();
                    SomeClass someObj = (SomeClass) iter.next();
                    jsonObj.put("name", someObj.getName());
                    jsonArr.put(jsonObj);
            }
    
            return jsonArr.toString(); // return jsonstring as response
        }
    
    这就是如何在视图中处理它(比如
    JSP
    )。这里是对控制器的ajax调用,并将响应设置为页面中的字段

    $.ajax({
                            url : "getSomething.htm", //request send to controller
                            type : "POST",
                            data : {
                                'someData' : data
                            },
                            success : function(data) {
                                var arr = JSON.parse(data);
                                response($.map(arr, function(item) {
                                    return {
                                        value : item.name, //setting the value to the view 
    
                                    };
                                }));
                            }
                        });
    

    希望这有帮助

    控制器中的一个方法如下所示,它给出json响应

    @RequestMapping(value = "/getSomething", method = RequestMethod.POST)
        public @ResponseBody String getSomething(HttpServletRequest req) 
        {
    
            JSONArray jsonArr = new JSONArray();
            Collection someList = new ArrayList();
    
            someList = someService.getsomeList(req); // here you get the response from service class to controller
            Iterator iter = categoryList.iterator();
    
            while (iter.hasNext()) // iterate the colleection
            {
                    JSONObject jsonObj = new JSONObject();
                    SomeClass someObj = (SomeClass) iter.next();
                    jsonObj.put("name", someObj.getName());
                    jsonArr.put(jsonObj);
            }
    
            return jsonArr.toString(); // return jsonstring as response
        }
    
    这就是如何在视图中处理它(比如
    JSP
    )。这里是对控制器的ajax调用,并将响应设置为页面中的字段

    $.ajax({
                            url : "getSomething.htm", //request send to controller
                            type : "POST",
                            data : {
                                'someData' : data
                            },
                            success : function(data) {
                                var arr = JSON.parse(data);
                                response($.map(arr, function(item) {
                                    return {
                                        value : item.name, //setting the value to the view 
    
                                    };
                                }));
                            }
                        });
    

    希望这有帮助

    如果我们把你的第五步分开。。。 1) 数据以某种格式从服务返回 2) UI以该格式接收并在屏幕上显示。 这种格式是XML或JSON,甚至是纯文本。这是您在从UI进行调用时提到的接受类型,并在服务中设置响应头


    JSON代表Javascript对象表示法,因此,如果响应是JSON格式的,您可以通过使用JSON.parse对其进行解析直接将其用作Javascript变量。接受类型实际上取决于您的需求。在大多数情况下,JSON是首选的,因为它很容易转换为JS对象

    如果我们把你的第五步分开。。。 1) 数据以某种格式从服务返回 2) UI以该格式接收并在屏幕上显示。 这种格式是XML或JSON,甚至是纯文本。这是您在从UI进行调用时提到的接受类型,并在服务中设置响应头


    JSON代表Javascript对象表示法,因此,如果响应是JSON格式的,您可以通过使用JSON.parse对其进行解析直接将其用作Javascript变量。接受类型实际上取决于您的需求。在大多数情况下,JSON是首选的,因为它很容易转换为JS对象

    正如其他人所说,在您的示例中,当数据从服务器返回到客户机时,JSON/XML几乎处于链的末端

    将JSON和XML(以及其他格式)视为一种框。有些盒子是塑料做的,有些是硬纸板做的,因为它们有不同的用途

    JSON/XML是用于向服务器发送/请求数据的“框”类型

    在您的示例中:

    • 用户单击前端上的按钮
    • 用户被重新定向到URL,例如/User/{userid}
    • 服务类中的Java方法调用repository(例如Crud repository)类来检索数据
    • 存储库从数据库中提取数据(例如,关于特定用户的数据)
    • 来自DB的数据从服务器的数据格式(“框类型”)转换为更常见的格式(如JSON或XML)
    • JSON/XML格式的数据被发送到前端用于显示
    可以这样想:如果没有供人员/系统参考的通用格式,那么如果查询Oracle数据库,则需要能够理解该格式。如果您必须查询Sybase数据库,那么您也需要能够理解这一点

    要解决这个问题,您可以选择一种“通用”格式(一种更容易装入更多卡车的箱子,而不是只能由特定类型的卡车运输的箱子),从而更容易“运输”数据

    因此,从本质上讲,JSON/XML只是一种表示数据的方式,因此它可以用于表示最初采用其他“难以读取”格式的数据,并使其更易于读取或使用

    例如,通过将DB对象返回为JSON,您可以在网页中显示它们,因为大多数网页框架都理解JSON,而很少有框架能够理解Oracle/Sybase格式(有驱动程序可以这样做,但这超出了本示例的范围)


    您还可以使用它与其他也理解JSON的服务器进行通信(例如第三方API),因此,如果服务器A和B具有不同的数据表示(内部一个是Oracle支持的,另一个是Sybase支持的),它们仍然可以使用“通用”格式(如JSON)相互通信。

    正如其他服务器所说,在您的示例中,当数据从服务器返回到客户机时,JSON/XML几乎处于链的末端

    想想JSON和XML(以及其他