我可以: 邀请好友来看>>
ZOL星空(中国) > 新手区星空(中国) > 构建RESTful API
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

构建RESTful API

13浏览 / 1回复

qq_64912633q...

qq_64912633qyyz

0
精华
27
帖子

等  级:Lv.3
经  验:1110
  • Z金豆: 254

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:广东
  • 注  册:2018-06-22
  • 登  录:2019-04-09
发表于 2018-07-10 10:27:26
电梯直达 确定
楼主

首先,回顾并详细说明一下在快速入门中使用的@Controller@RestController@RequestMapping注解。如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下快速入门的内容。

  • @Controller:修饰class,用来创建处理http请求的对象

  • @RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。

  • @RequestMapping:配置url映射

下面我们尝试使用Spring MVC来实现一组对User对象操作的RESTful API,配合注释详细说明在Spring MVC中如何映射HTTP请求、如何传参、如何编写单元测试。

RESTful API具体设计如下:


构建RESTful API

User实体定义:

public class User { 

 

    private Long id; 

    private String name; 

    private Integer age; 

 

    // 省略setter和getter 

     

}


实现对User对象的操作接口

@RestController 

@RequestMapping(value="/users")     // 通过这里配置使下面的映射都在/users下 

public class UserController { 

 

    // 创建线程安全的Map 

    static Map users = Collections.synchronizedMap(new HashMap()); 

 

    @RequestMapping(value="/", method=RequestMethod.GET) 

    public List getUserList() { 

        // 处理"/users/"的GET请求,用来获取用户列表 

        // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递 

        List r = new ArrayList(users.values()); 

        return r; 

    } 

 

    @RequestMapping(value="/", method=RequestMethod.POST) 

    public String postUser(@ModelAttribute User user) { 

        // 处理"/users/"的POST请求,用来创建User 

        // 除了@ModelAttribute绑定参数之外,还可以通过@RequestParam从页面中传递参数 

        users.put(user.getId(), user); 

        return "success"; 

    } 

 

    @RequestMapping(value="/{id}", method=RequestMethod.GET) 

    public User getUser(@PathVariable Long id) { 

        // 处理"/users/{id}"的GET请求,用来获取url中id值的User信息 

        // url中的id可通过@PathVariable绑定到函数的参数中 

        return users.get(id); 

    } 

 

    @RequestMapping(value="/{id}", method=RequestMethod.PUT) 

    public String putUser(@PathVariable Long id, @ModelAttribute User user) { 

        // 处理"/users/{id}"的PUT请求,用来更新User信息 

        User u = users.get(id); 

        u.setName(user.getName()); 

        u.setAge(user.getAge()); 

        users.put(id, u); 

        return "success"; 

    } 

 

    @RequestMapping(value="/{id}", method=RequestMethod.DELETE) 

    public String deleteUser(@PathVariable Long id) { 

        // 处理"/users/{id}"的DELETE请求,用来删除User 

        users.remove(id); 

        return "success"; 

    } 

 

}

qq_0547055hb...

qq_0547055hb582


精华

帖子

等  级:Lv.1
经  验:0
发表于 2018-10-26 20:05:11 2楼

您的内容正在火速审核中,请稍等

qq_9479154fw...

qq_9479154fw7z0


精华

帖子

等  级:Lv.1
经  验:0
发表于 2018-10-25 20:55:47 1楼

顶~ ~~~~~~~~~~~

http://duoduo123.cc



高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表