restfulAPIレスト

私はあまり条件パラメータを書き込み要求/書籍/ queryByNameAndAge / {name}を取得するときに、クエリリストに質問をRestfulapi / {年齢}    

 引数が多い場合、彼らと安らかなスタイルが一致しないように、JSONを送信されたポスト要求を交換することではないでしょうか?

 

关于Swagger @ApiModel 返回内容注释不显示问题
封装的返回类MSG 加入泛型之后,还需要在你Controller返回的数据也加上泛型,不然还是展示不出来的
参考如下:https://blog.csdn.net/qq_32917699/article/details/81486060

 

package com.winner.es.controller;

import com.winner.es.model.Book;
import com.winner.es.model.Msg;
import com.winner.es.repository.BookRepository;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.poi.ss.formula.functions.T;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;

/**
 * @ApiParam 注解,对单个参数的描述
 *
 * 关于 update_time  del_flag 还有主键, 可以实现 实时的同步
 * https://blog.csdn.net/yiyiholic/article/details/82352236
 *
 *
 * restfulAPI的优点
 * 不用费力的拼 getBook?id=1&name=2  使用PathVariable简单了很多 /book/detail/1001  1001直接作为请求参数  get请求就是查询
 *
 * @PathVariable可以用来映射URL中的占位符{xxx}到目标方法的参数中  带占位符的 URL 是 Spring3.0 新增的功能
 *
 * restful风格传入多个参数:
 * @GetMapping("/{id}/{name}")
 * 方法上是不区分先后顺序的 (@PathVariable("id") String id,@PathVariable("name") String name)
 * post请求封装为一个json的对象
 *
 * @author wangxl
 * @date 2019-08-12
 */
@RestController
@RequestMapping(value="/book")
public class EsBookController {

    private static Logger log = LoggerFactory.getLogger(EsBookController.class);

    @Autowired
    private MessageSourceUtil messageSourceUtil;

    @Autowired
    private ElasticsearchTemplate elasticsearchTemplate;

    @Autowired
    private BookRepository bookRepository;

    /**
     * localhost:8888/book/messages/zh_cn
     *
     * @return
     */
    @ApiOperation(value = "多语言测试接口")
    @GetMapping("/messages/{lang}")
    public String messages(@ApiParam(value = "语言类型", required = true) @PathVariable("lang") String lang) {
        String message = messageSourceUtil.getMessage("ACCOUNT_IS_NULL", lang);
        return message;
    }

    @ApiOperation(value = "新增一本书")
    @PostMapping(name = "/")
    public Msg addBook(@ApiParam(value = "应用DTO对象", required = true) @RequestBody Book book) {
        bookRepository.save(book);//保存一个
        return Msg.success();
    }

    @ApiOperation(value = "查询一本书")
    @GetMapping("/{id}")
    public Msg selectOne(@PathVariable("id") String id) {
        Optional<Book> optionalBook = bookRepository.findById(id);
        return Msg.success().add(optionalBook);
    }


    /**
     * localhost:8888/book/{id}  put请求  body中的json,id必须给传上
     *
     * @param book
     * @return
     */
    @ApiOperation(value = "修改一本书")
    @PutMapping("/{id}")
    public Msg updateBook(@ApiParam(value = "应用DTO对象()", required = true) @RequestBody Book book) {
        bookRepository.save(book);//id相同的保存就是修改
        return Msg.success();
    }


    /**
     *
     * 根据id删除一条记录  RESTful风格删除时传入多个id实现  1234,1235会通过@PathVariable注解封装到ids中
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "根据主键id删除book信息")
    @DeleteMapping("/{id}")
    public Msg deleteBook(@PathVariable("id") String id) {
        bookRepository.deleteById(id);
        return Msg.success();
    }
    
}

 

公開された78元の記事 ウォン称賛12 ビュー120 000 +

おすすめ

転載: blog.csdn.net/qq_29883183/article/details/99454467