RESTFul API設計指南及使用說明,restfulapi
RESTFul API設計指南及使用說明
一、 協議
API與使用者的通訊協定,使用HTTP協議。
二、 網域名稱
應盡量將API部署在專用網域名稱之下(http://api.example.com)
也可以將API放在主網域名稱下(http://example.com/api)
三、 版本
應該將API的版本號碼放入URL(http://example.com/api/v1.0)
四、 路徑與映射
REST的關鍵原則與將你的API分割成邏輯資源緊密相關。使用HTTP請求控制這些資源,
RESTFul原則提供了HTTP methods映射作為策略來處理CRUD actions,
需要繼承Resource父類如下:
@API():類註解,括弧類為類請求路徑,如@API("/api/v1.0")
@GET():方法註解,查詢,括弧內為方法請求路徑,如GET("/user"),如果通過API直接存取,括弧可不加
@GET("/:id"):方法註解,根據ID查詢,括弧內表示可根據ID直接查詢結果
@POST():方法註解,新增,括弧內為方法請求路徑,如果通過API直接存取,括弧可不加
@PUT():方法註解,修改,括弧內為方法請求路徑,如果通過API直接存取,括弧可不加
@DELETE():方法註解,刪除,括弧內為方法請求路徑,如果通過API直接存取,括弧可不加
五、 資源(Model)常用方法,需要繼承Model父類
1:findBy(String where,Object... params):根據條件查詢
1 public List<M> findBy(String username,String password){2 Model modelDao = new Model();3 List<M> list = modelDao.findBy("username=? AND password=?",username,password);4 return list;5 }
2:findById(Object id):根據ID查詢
1 public Model findById(Object id){2 Model modelDao = new Model();3 Model model = modelDao.findById(id);4 return model;5 }
3: findFirstBy(String where,Object... params):根據條件查詢,返回第一條資料
1 public Model findFirstBy(String username,String password){2 Model modelDao = new Model();3 Model model = modelDao.findFirstBy("username=? AND password=?",username,password);4 return model;5 }
4: findAll():查詢所有
1 public List<M> findAll(){2 Model modelDao = new Model();3 List<M> list = modelDao.findAll();4 return list;5 }
5:findColsBy(String colums, String where, Object... params):查詢相關列資訊
1 public List<M> findColsBy(String username,String password){2 Model modelDao = new Model();3 List<M> list = modelDao.findColsBy("id,username,password","username=? AND password=?",username,password)4 return list;5 }
6: save():添加
1 public boolean save(){2 Model model = new Model();3 model.set("username","test");4 model.set("password","123456");5 boolean flag = model.save();6 return flag;7 }
7:save(Model model):添加
1 public boolean save(Model model){2 Model modelDao = new Model();3 boolean flag = modelDao.save(model);4 return flag;5 }
8:save(List<M> list):大量新增
1 public boolean save(List<M> list){2 Model modelDao = new Model();3 boolean flag = modelDao.save(list);4 return flag;5 }
9:update():更新
1 public boolean update(){2 Model model = new Model();3 model.set("id",1);4 model.set("username","test");5 model.set("password","123456");6 boolean flag = model.update();7 return flag;8 }
10:update(String sql,Object... params):更新或刪除 sql為更新語句時更新,為刪除語句時刪除
1 public boolean update(String username,String password,int id){2 Model modelDao = new Model();3 String sql = "update user set username=?,password=? where id=?";4 boolean flag = modelDao.update(sql,username,password,id);5 return flag;6 }
11:delete():刪除
1 public boolean delete(){2 Model model = new Model();3 model.set("id",1);4 boolean flag = model.delete();5 return flag;6 }
12:deleteBy(String where,Object... params):根據條件刪除
1 public boolean deleteBy(String username,String password){2 Model modelDao = new Model();3 boolean flag = modelDao.deleteBy("username=? AND password=?",username,password);4 return flag;5 }
13:deleteById(Object id):根據ID刪除
1 public boolean deleteById(int id){2 Model modelDao = new Model();3 boolean flag = modelDao.deleteById(id);4 return flag;5 }
14:fullPaginate(int pageNumber, int pageSize, String sql, Object... params):分頁查詢
1 public FullPage<M> fullPaginate(int pageNumber, int pageSize,String username,String password) {2 Model modelDao = new Model();3 String sql = "select * from user where username=? AND password=?";4 FullPage<M> fullPage = modelDao.fullPage(pageNumber,pageSize,sql,username,password);5 return fullPage;6 }
//註:fullPage.getList()擷取查詢結果 fullPage.getTotalRow()擷取總條數