zoukankan      html  css  js  c++  java
  • RESTful的一个样例

    后台代码:
    1 @RequestMapping(value = { "queues" })
    2 @ResponseBody
    3 public List<ResourcePool> list(Model model) {
    4 List<ResourcePool> lst = Lists.newArrayList();
    5 ......
    6 return lst;
    7 }
    前台处理:
     1 $(function() {
     2 $.getJSON("${ctx}/v1/resourcepool/queues/", function(data){
     3 $.each(data, function(key, queue){
     4 var tr = "<tr>"
     5 tr = tr + "<td>" + queue.queueName + "</td>";
     6 ... ...
     7 tr = tr + "</tr>";
     8 $("#contentTable").append(tr);//向table中追加tr
     9 })
    10 })
    11 });
    12  
    即使后台返回的是一个list,前台处理的也是一个Map,key是0,1,2..,value才是List里面的对象;
    异常信息
    页面不存在(503):请求controller(资源)的路径是没问题,但是controller返回的路径是有问题的。
    路径不存在(403):Forbitten(禁止)访问资源;服务器网站存在,但是资源可能不存在;URL写错了
    400 Bad Request:调试了半天,终于调通了原来是因为;@PathVariable里面的参数名称和@RequestMapping里面的参数不一致造成的。
    @RequestMapping(value = { "queues/{queueName}" }, method = RequestMethod.POST)
    public String removeTenant(@PathVariable("queueName") String userName, Model model) throws Throwable {
    RESTful要搞清楚是请求;之前纠结于一个问题,就是会页面显示的${},我想要把${}给干掉, RESTful嘛;但是你要知道你在JSP页面搞这个东西没有问题;因为页面都是在服务器上面处理;包括页面你也可以搞addModel,这都是没有问题;
    你要考虑的是如果别人是第三方,你放心别人第三方是不可能去请求你的页面的,能请求的只是你的 数据;请求的你的数据,请求你的数据;所以页面需要和请求数据,提交数据分离开来。页面扮演第三方的角色;页面本身是可以有${};但是你要注意不能使用spring的那种自动绑定数据,和数据相关的都不能使用spring了;数据相关只能通过RESTful的接口去获取,然后通过js进行赋值。
    状态可以通过${}形式来获取,所以对于index,获取页面的请求,你可以使用addmodel,addAttribute;但是对于提交的方法API,返回数据的方法API,是不能使用这种的。只能通过json去返回。
     
    对于PUT和POST写法,只能通过下面的方式来进行提交:
     1 var data = {
     2 'queueName' : queueName,
     3 'coreNum' : coreNum,
     4 'mem' : mem,
     5 'appCount' : appCount,
     6 'aclForSubmit' : aclForSubmit
     7 };
     8 var type = "${mode}" == "add" ? "PUT" : "POST";
     9 $.ajax({
    10 url : '${ctx}/v1/resourcepool/queues',
    11 type : type,
    12 data : JSON.stringify(data),
    13 success : function(result) {
    14 alert(result);
    15 }
    16 });
     
    注意data需要进行json的string化处理。
     关于调试
    调试RESTful真的是要各种工具齐上阵,包括firefox的html节点查看器;还有js的调试器以及Network工具用来查看网络请求情况(包括url,动作,参数,后台相应)
     
  • 相关阅读:
    BZOJ 1977: [BeiJing2010组队]次小生成树 Tree( MST + 树链剖分 + RMQ )
    BZOJ 2134: 单选错位( 期望 )
    BZOJ 1030: [JSOI2007]文本生成器( AC自动机 + dp )
    BZOJ 2599: [IOI2011]Race( 点分治 )
    BZOJ 3238: [Ahoi2013]差异( 后缀数组 + 单调栈 )
    ZOJ3732 Graph Reconstruction Havel-Hakimi定理
    HDU5653 Bomber Man wants to bomb an Array 简单DP
    HDU 5651 xiaoxin juju needs help 水题一发
    HDU 5652 India and China Origins 并查集
    HDU4725 The Shortest Path in Nya Graph dij
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/8597514.html
Copyright © 2011-2022 走看看