一、REST,以及RESTful的讲解
1.REST
是一种设计API的模式,一种软件架构风格。最常用的数据格式是JSON。由于JSON能直接被JavaScript读取,所以,以JSON格式编写的REST风格的API具有简单、易读、易用的特点。
https://www.liaoxuefeng.com/wiki/1022910821149312/1105000713418592
https://blog.csdn.net/qq_21383435/article/details/80032375
2.HTTP方法
HTTP采用简单的请求/响应模式的消息交换旨在实现针对某个Web资源的某种操作。至于针对资源的操作类型,不外乎CRUD(Create、Retrieve、Update和Delete)而已。一个HTTP请求除了利用URI标志目标资源之外,还需要通过HTTP方法(HTTP Method或者HTTP Verb)指名针对资源的操作类型。我们常用的HTTP方法 包括GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECTION和PATCH等。
GET:获取资源。
HEAD:获取描述资源的元数据信息。
OPTIONS:探测请求,确定某个目标地址的真实请求应该具有怎么样的约束,如采用怎么样的Http方法或必须携带怎么的自定义报头,然后根据其约束发送符合条件的请求。“跨域资源”的预检请求采用的就是Options方法。
POST:添加一个新资源。
PUT:添加或修改一个资源,存在就修改,否则添加,这里的修改是完整修改。
PATCH:部分修改,补丁的意思。
DELETE:删除资源。
二、编写REST API
https://www.liaoxuefeng.com/wiki/1022910821149312/1105003357927328
三、springboot编写REST API
package com.hxkg.datafusion.controller.dataservice;
import com.hxkg.datafusion.entity.customized.ShareFlightAO;
import com.hxkg.datafusion.entity.customized.UserAO;
import com.hxkg.datafusion.entity.gen.ShareFlightCriteria;
import com.hxkg.datafusion.service.IShareFlightService;
import com.hxkg.datafusion.util.Constant;
import com.hxkg.datafusion.util.DateTimeUtil;
import com.hxkg.datafusion.util.ServiceResult;
import org.apache.shiro.SecurityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* Created by yangfeng on 2019/8/26.
*
*/
@RestController
@RequestMapping("/api/dataservice")
public class ShareFlightController {
private static Logger LOG = LoggerFactory.getLogger(ShareFlightController.class);
@Resource
private IShareFlightService shareFlightService;
/**
* 查询所有
*
* @return
*/
@RequestMapping(value = "/shareflight", method = RequestMethod.GET)
public Object listAll() {
return shareFlightService.selectByCriteria(null);
}
/**
* 根据id查询
*
* @param id
* @return
*/
@RequestMapping(value = "/shareflight/{id}", method = RequestMethod.GET)
public Object getById(@PathVariable("id") String id) {
return shareFlightService.selectByPrimaryKey(id);
}
/**
* 新增
*
* @param shareFlight
* @return
*/
@RequestMapping(value = "/shareflight", method = RequestMethod.POST)
public Object insert(ShareFlightAO shareFlight) {
//检查是否已经存在
ShareFlightCriteria criteria = new ShareFlightCriteria();
criteria.createCriteria().andOriginFlightNoEqualTo(shareFlight.getOriginFlightNo());
ServiceResult<List<ShareFlightAO>> result = shareFlightService.selectByCriteria(criteria);
if (result != null && result.isSucceed() && !CollectionUtils.isEmpty(result.getData())) {
return ServiceResult.error("航班号已被配置");
}
UserAO user = (UserAO) SecurityUtils.getSubject().getPrincipal();
shareFlight.setCreater(user.getId());
shareFlight.setCreateTime(DateTimeUtil.formatDateTime(new Date()));
return shareFlightService.insert(shareFlight);
}
/**
* 修改
*
* @param id
* @param shareFlight
* @return
*/
@RequestMapping(value = "/shareflight/{id}", method = RequestMethod.PUT)
public Object updateById(@PathVariable("id") String id, ShareFlightAO shareFlight) {
ShareFlightCriteria criteria = new ShareFlightCriteria();
criteria.createCriteria().andOriginFlightNoEqualTo(shareFlight.getOriginFlightNo()).andIdNotEqualTo(id);
ServiceResult<List<ShareFlightAO>> result = shareFlightService.selectByCriteria(criteria);
if (result != null && result.isSucceed() && !CollectionUtils.isEmpty(result.getData())) {
return ServiceResult.error("航班号已被配置");
}
UserAO user = (UserAO) SecurityUtils.getSubject().getPrincipal();
shareFlight.setId(id);
shareFlight.setUpdater(user.getId());
shareFlight.setUpdateTime(DateTimeUtil.formatDateTime(new Date()));
return shareFlightService.saveOrUpdate(shareFlight);
}
/**
* 删除
*
* @param id
* @return
*/
@RequestMapping(value = "/shareflight/{id}", method = RequestMethod.DELETE)
public Object deleteById(@PathVariable("id") String id) {
return shareFlightService.deleteById(id);
}
}
四、测试
insert :
list 所有:
getById:
updateById:
deteleById: