springboot+REST

一、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:添加一个新资源。

扫描二维码关注公众号,回复: 8513919 查看本文章

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:

发布了70 篇原创文章 · 获赞 63 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/xiaoxiangzi520/article/details/100076703