REST:のRepresentational State転送(転送のRepresentational State)
RESTはアーキテクチャの制約と原則のセットを指し革新的な技術ではありません。RESTアーキテクチャの制約と原則に従うことを条件として、RESTfulなアーキテクチャと呼んでいます。
RESTfulなコア
の1、リソースとURI
RESTはのRepresentational State転送され、実際にそれを表現するものを意味するということですか?実際には、式がリソースを指し
、あなたのリソースとは何ですか?必要な限り、参照システムのいずれかのトランザクション、それは資源である、それは絵することができ、テキストの一部、あるいはサービスすることができ、簡単に言えば、実際のリソースがあります。リソースを識別することにしたいために、我々は一意の識別子を持っている必要があり、Web上で、このロゴは、実際には、アドレスリソースURIであります
図2は、リソースである
リソース表現は、クライアントとサーバ間でリソースを転送される
3、状態遷移
クライアントに変更を送信するためのリソース、及びその後の状態に移行します。
RESTfulなアーキテクチャ機能
- リソースにアクセスするための統一されたクライアント・インターフェース
- 以上、簡潔に理解しやすく、拡張しやすいURL
- 異なるシステム間でのリソースの共有を助長します
具体的には、4つの形態は、RESTfulなHTTPプロトコルは、4つの基本的な動作を示しています
- GET:リソースへのアクセスを
- POST:新しいリソース
- PUT:リソースを変更します。
- DELETE:リソースを削除します。
RESTfulな開発スタイルは、
コースを照会します。http:// localhost:8080 / ID方式= 'get'の値
のコースを追加します。http:// localhost:8080 /コース法は= 'ポスト'
のコースを変更します。http:// localhost:8080 / ID方式= '置く'
のコースを削除します。http:// localhost:8080 / ID方式= '削除'
次の例では、
エンティティクラス:コース
package com.lzy.entity;
public class Course {
private int id;
private String name;
private double price;
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public double getPrice(){
return price;
}
public void setPrice(double price){
this.price=price;
}
}
dao层
package com.lzy.dao;
import com.lzy.entity.Course;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@Repository
public class CourseDao {
private Map<Integer, Course>courses = new HashMap<Integer, Course>();
/**
* 新增课程
*/
public void add(Course course){
courses.put(course.getId(),course);
}
/**
* 查询全部课程
*/
public Collection<Course>getAll(){
return courses.values();
}
/**
* 通过id查询课程
*/
public Course getById(int id){
return courses.get(id);
}
/**
* 修改课程
*/
public void update(Course course){
courses.put(course.getId(),course);
}
/**
* 删除课程
*/
public void deleteById(int id){
courses.remove(id);
}
}
制御層
package com.lzy.controller;
import com.lzy.dao.CourseDao;
import com.lzy.entity.Course;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import java.util.Map;
@Controller
public class CourseController {
@Autowired
private CourseDao courseDao;
/**
* 添加课程
*/
@PostMapping(value = "/add")
public String add(Course course){
courseDao.add(course);
return "redirect:/getAll";
}
/**
* 查询全部课程
*/
@GetMapping(value = "/getAll")
public ModelAndView getAll(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
modelAndView.addObject("courses",courseDao.getAll());
return modelAndView;
}
/**
* 通过id查询课程
*/
@GetMapping(value = "/getById/{id}")
public ModelAndView getById(@PathVariable(value = "id")int id){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("edit");
modelAndView.addObject("course",courseDao.getById(id));
return modelAndView;
}
/**
* 修改课程
*/
@PutMapping(value = "/update")
public String update(Course course){
courseDao.update(course);
return "redirect:/getAll";
}
/**
* 删除课程
*/
@DeleteMapping(value = "/delete/{id}")
public String delete(@PathVariable(value = "id") int id){
courseDao.deleteById(id);
return "redirect:/getAll";
}
}