<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                REST和RESTFUL REST是一種架構風格,REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。其核心是面向資源。 ![](https://box.kancloud.cn/aedb19aa8eeed361a565fb612d79534a_600x388.png) 面向操作的URL /getAllUsers /getUser?userid=1 /getUser?userid=2 面向資源的URL: 1. URL中不體現操作,即沒有動詞。 2. 每個資源對應不同的URL, /user/1, /user/2 GET /users:列出所有用戶 POST /users:新建一個用戶 GET /user/ID:獲取某個指定用戶的信息 PUT /user/ID:更新某個指定用戶的信息 DELETE /user/ID:刪除某個用戶 復雜一些的URL(注意,URL中的中文涉及URL編碼的問題): Get /users/{username}/name Get /users/{username}/{password}/validate Get /users/2012/10 Rest常用的5個verb - GET(SELECT):從服務器取出資源(一項或多項)。 - POST(CREATE):在服務器新建一個資源。 - PUT(UPDATE):在服務器更新資源(客戶端提供改變后的完整資源)。 - PATCH(UPDATE):不建議用,因為不是HTTP標準請求,有兼容性問題。 - DELETE(DELETE):從服務器刪除資源。 Http1.2的8種請求, OPTIONS HEAD GET POST PUT DELETE TRACE CONNECT ajax提交時,chrome瀏覽器測試結果,GET, POST, DELETE,PUT都支持, 在PUT時,后臺無法獲得參數,解決方法:在web.xml中配置過濾器 ~~~ <filter> <filter-name>HttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> <filter-mapping> <filter-name>HttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ~~~ Spring MVC控制器 ~~~ @Controller public class TestRestful { public List<UserInfo> users = new ArrayList<>(); public TestRestful() { UserInfo u1 = new UserInfo(); u1.setUserid(1); u1.setUsername("feiyy"); u1.setPassword("123"); users.add(u1); UserInfo u2 = new UserInfo(); u2.setUserid(2); u2.setUsername("xx"); u2.setPassword("123"); users.add(u2); UserInfo u3 = new UserInfo(); u3.setUserid(3); u3.setUsername("yy"); u3.setPassword("123"); users.add(u3); } @RequestMapping(value="/users", method=RequestMethod.GET) @ResponseBody public List<UserInfo> getAllUsers() { return users; } @RequestMapping(value="/users", method=RequestMethod.POST) @ResponseBody public List<UserInfo> addUser(UserInfo u) { users.add(u); return users; } @RequestMapping(value="/user/{id}", method=RequestMethod.PUT) @ResponseBody public List<UserInfo> modifyUser(@PathVariable int id, UserInfo u) { System.out.println(id); System.out.println(u.getUserid()); System.out.println(u.getUsername()); for(int i=0; i<users.size();i++) { UserInfo item = users.get(i); if(item.getUserid() == id) { item.setUsername(u.getUsername()); } } return users; } @RequestMapping(value="/user/{id}", method=RequestMethod.DELETE) @ResponseBody public List<UserInfo> deleteUser(@PathVariable int id) { for(int i=0; i<users.size();i++) { UserInfo item = users.get(i); if(item.getUserid() == id) { users.remove(item); break; } } return users; } @RequestMapping(value="/user/{id}", method=RequestMethod.GET) @ResponseBody public UserInfo getUserById(@PathVariable int id) { for(int i=0; i<users.size();i++) { UserInfo item = users.get(i); if(item.getUserid() == id) { return item; } } return null; } @RequestMapping(value="/user/{name}", method=RequestMethod.GET) @ResponseBody public UserInfo getUserByName(@PathVariable String name) { for(int i=0; i<users.size();i++) { UserInfo item = users.get(i); if(item.getUsername().equals(name)) { return item; } } return null; } @RequestMapping(value="/user/{name}/{pass}", method=RequestMethod.GET) @ResponseBody public UserInfo getUserByNamePass(@PathVariable String name, @PathVariable String pass) { for(int i=0; i<users.size();i++) { UserInfo item = users.get(i); if(item.getUsername().equals(name) && item.getPassword().equals(pass)) { return item; } } return null; } } ~~~ html頁面: ~~~ $("#btn_getall").click(function(){ $.ajax({ url:"/TestSpringMVC/users", dataType:"json", success:function(data) { console.log(data); }, error:function(err) { console.log(err); } }); }); $("#btn_add").click(function(){ $.ajax({ url:"/TestSpringMVC/users", type:"post", data:{userid:"4",username:"eee",password:"eee"}, dataType:"json", success:function(data) { console.log(data); }, error:function(err) { console.log(err); } }); }); $("#btn_delete").click(function(){ $.ajax({ url:"/TestSpringMVC/user/4", type:"delete", dataType:"json", success:function(data) { console.log(data); }, error:function(err) { console.log(err); } }); }); $("#btn_update").click(function(){ $.ajax({ url:"/TestSpringMVC/user/1", type:"put", data:{userid:"1",username:"feiyuanyuan",password:"123"}, dataType:"json", success:function(data) { console.log(data); }, error:function(err) { console.log(err); } }); }); ~~~ 表單提交時,只支持get和post,解決方法: 1. 配置過濾器 ~~~ <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ~~~ 2. 表單加入隱藏屬性_method ~~~ <form action="/TestSpringMVC/user/1" method="post"> <input type="hidden" name="userid" value="1"/> <input type="text" name="username"/> <input type="hidden" name="password" value="123"/> <input type="hidden" name="_method" value="PUT"/> <button type="submit">表單提交修改</button> </form> <form action="/TestSpringMVC/user/1" method="post"> <input type="hidden" name="userid" value="1"/> <input type="hidden" name="_method" value="DELETE"/> <button type="submit">表單提交刪除</button> </form> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看