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,动作,参数,后台相应)
     
  • 相关阅读:
    vue-cli3项目引用zepto报$不存在怎么处理
    RocketMQ(五):server端处理框架及消费数据查找实现
    文件上传踩坑记及文件清理原理探究
    ES使用总结 --ES实践速查手册
    java 执行shell命令及日志收集避坑指南
    Hive 如何快速拉取大批量数据
    程序员表白程序,哈哈哈,笑死我了
    发现了一个好玩的辞职程序,哈哈哈,笑死我了
    为什么最新版的VS2017没有net framework 4.6.2,net framework 4.7.2,net framework 4.6.2,net framework 4.8,也无法安装
    各个版本 Windows 10 的名称、完整版本号、开发代号和系统自带的 .NET Framework 版本
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/8597514.html
Copyright © 2011-2022 走看看